Introducción
Establecer una conexión SSH (Secure Shell) es esencial para iniciar sesión y administrar de manera efectiva un servidor remoto. Las claves cifradas son un conjunto de credenciales de acceso que se utilizan para establecer una conexión segura.
Esta guía le mostrará cómo generar claves SSH en Ubuntu 18.04. También cubriremos la configuración de la autenticación basada en clave SSH para conectarse a un servidor remoto sin requerir una contraseña.
Requisitos previos
- Un servidor que ejecuta Ubuntu 18.04, SSH habilitado en Ubuntu
- Una cuenta de usuario con sudo privilegios
- Acceso a una ventana de terminal/línea de comandos (Ctrl-Alt-T)
Creación de claves SSH en Ubuntu
Paso 1:generar el par de claves SSH
En su cliente sistema, el que está utilizando para conectarse al servidor, debe crear un par de códigos clave.
Para generar un par de códigos de clave SSH , ingrese los comandos:
mkdir –p $HOME/.ssh
chmod 0700 $HOME/.ssh
ssh-keygen
Esto creará un directorio oculto para almacenar sus claves SSH y modificará los permisos para ese directorio. El ssh-keygen El comando crea un par de claves RSA de 2048 bits.
Para mayor seguridad, utilice RSA4096:
ssh –keygen –t rsa 4096
Si ya ha generado un par de claves, se le pedirá que las sobrescriba y esas claves antiguas ya no funcionarán.
El sistema le pedirá que cree una frase de contraseña como una capa adicional de seguridad. Ingrese una frase de contraseña memorable y presione Enter .
Paso 2:copia la clave pública en el servidor de Ubuntu
Primero, obtenga la dirección IP del servidor Ubuntu al que desea conectarse.
En una ventana de terminal, ingrese:
ip a
La dirección IP del sistema aparece en la segunda entrada:
En el cliente sistema, use el ssh-copy-id comando para copiar la información de identidad al servidor Ubuntu :
ssh-copy-id [email protected]<server_IP>
Reemplazar server_IP con la dirección IP real de su servidor.
Si es la primera vez que se conecta al servidor, es posible que vea un mensaje que indica que no se puede establecer la autenticidad del host:
The authenticity of host '192.168.0.15 (192.168.0.15)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)?
Escribe sí y presiona Entrar .
El sistema comprobará su cliente sistema para el id_rsa.pub clave que se generó previamente. Luego le pedirá que ingrese la contraseña para el servidor cuenta de usuario. Escríbala (el sistema no mostrará la contraseña) y presione Enter .
El sistema copiará el contenido del ~/.ssh/id_rsa.pub del cliente sistema en ~/.ssh/authorized_keys directorio del servidor sistema.
El sistema debería mostrar:
Number of key(s) added: 1
Método alternativo para copiar manualmente la clave SSH
Si su sistema no tiene el ssh-copy-id comando, puede copiar la clave manualmente a través de SSH.
Utilice el siguiente comando:
cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Paso 3:inicie sesión en el servidor remoto
Para iniciar sesión en un servidor remoto, ingrese el comando:
ssh [email protected]_IP
El sistema no debe solicitar una contraseña ya que está negociando una conexión segura utilizando las claves SSH. Si usó una frase de contraseña de seguridad, se le pedirá que la ingrese. Después de hacerlo, habrá iniciado sesión.
Paso 4:deshabilite la autenticación de contraseña
Este paso crea una capa adicional de seguridad. Si eres la única persona que inicia sesión en el servidor, puedes desactivar la contraseña. El servidor solo aceptará un inicio de sesión con su clave privada para que coincida con la clave pública almacenada.
Edite el sshd_config archivo:
sudo nano /etc/ssh/sshd_config
Busque el archivo y encuentre la PasswordAuthentication opción.
Edite el archivo y cambie el valor a no :
...
PasswordAuthentication no
...
Guarde el archivo y salga, luego reinicie el servicio SSH:
sudo systemctl restart ssh
Verifique que SSH todavía esté funcionando antes de finalizar la sesión:
ssh [email protected]_IP
Si todo funciona, puede cerrar y reanudar el trabajo normalmente.