Introducción
Concha segura (
Generalmente, hay dos formas para que los clientes accedan a sus servidores:mediante autenticación basada en contraseña o autenticación basada en clave pública.
Se recomienda encarecidamente el uso de claves SSH para la autenticación, ya que es una alternativa más segura a las contraseñas.
Este tutorial lo guiará a través de los pasos sobre cómo generar y configurar claves SSH en CentOS 7. También cubrimos la conexión a un servidor remoto usando las claves y la desactivación de la autenticación de contraseña .
Antes de empezar
1. Verifique las claves existentes
Antes de cualquier instalación, es aconsejable verificar si hay claves existentes en las máquinas cliente.
Abra la terminal y enumere todas las claves públicas almacenadas con el siguiente comando:
ls -l ~/.ssh/id_*.pub
La salida le informa sobre las claves generadas actualmente en el sistema. Si no hay ninguno, el mensaje le dice que no puede acceder a /.ssh/id_*.pub
, ya que no existe tal archivo o directorio.
2. Verifique que SSH esté instalado
Para verificar si el paquete thw está instalado, ejecute el comando:
ssh -V
Si ya tiene SSH, la salida le indica qué versión se está ejecutando. Actualmente, la última versión es OpenSSH 8.0/8.0p1 .
Pasos para crear claves SSH en CentOS
Paso 1:crear un par de claves SSH
1. Comience iniciando sesión en la máquina de origen (servidor local) y cree un par de claves RSA de 2048 bits usando el comando:
ssh-keygen -t rsa
Si desea reforzar las medidas de seguridad, puede crear una clave de 4096 bits agregando el indicador -b 4096:
ssh-keygen -t rsa -b 4096
2. Después de ingresar el comando, debería ver el siguiente mensaje:
Generating public/private rsa key pair.
Enter file in which to save the key (home/your_username/.ssh/id_rsa):
3. Para guardar el archivo en el directorio sugerido, presione Enter . Alternativamente, puede especificar otra ubicación.
4. A continuación, el aviso continuará con:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Aunque crear una frase de contraseña no es obligatorio, es muy recomendable.
5. Finalmente, la salida terminará especificando la siguiente información:
Your identification has been saved in home/your_username/.ssh/id_rsa.
Your public key has been saved in home/your_username/.ssh/id_rsa.pub.
The key fingerprint is:
KYg355:gKotTeU5NQ-5m296q55Ji57F8iO6c0K6GUr5:PO1iRk
[email protected]
The key's randomart image is:
+------[RSA 3072]-------+
| .oo. |
| +o+. |
| + +.+ |
| o + S . |
| . E . . =.o|
| . + . [email protected]|
| + . oo*=O|
| oo . .+o+|
| o=ooo=|
+------ [SHA256] ------+
Ahora debe agregar la clave pública al servidor CentOS remoto.
Paso 2:Copie la clave pública al servidor CentOS
Puede copiar la clave SSH pública en el servidor remoto usando varios métodos diferentes:
- utilizando el script ssh-copy-id
- utilizando copia segura (scp)
- copiar manualmente la clave
El método más rápido y sencillo es utilizar ssh-copy-id
. Si la opción está disponible, recomendamos usarla. De lo contrario, pruebe con cualquiera de los otros dos indicados.
Copiar clave pública usando ssh-copy-id
1. Comience escribiendo el siguiente comando, especificando la cuenta de usuario SSH y la dirección IP del host remoto:
ssh-copy-id [email protected]_host
Si es la primera vez que su computadora local accede a este servidor remoto específico, recibirá el siguiente resultado:
The authenticity of host '104.0.316.1 (104.0.316.1)' can't be established.
ECDSA key fingerprint is KYg355:gKotTeU5NQ-5m296q55Ji57F8iO6c0K6GUr5:PO1iRk.
Are you sure you want to continue connecting (yes/no)? yes
2. Confirme la conexión:escriba sí y pulsa Intro .
3. Una vez que localice la clave id_rsa.pub key
creado en la máquina local, le pedirá que proporcione la contraseña para la cuenta remota. Escriba la contraseña y pulse Intro .
4. Una vez establecida la conexión, añade la clave pública en el servidor remoto. Esto se hace copiando el ~/.ssh/id_rsa.pub
archivo al ~/.ssh
del servidor remoto directorio. Puede ubicarlo bajo el nombre authorized_keys
.
5. Por último, la salida le indica la cantidad de claves agregadas, junto con instrucciones claras sobre qué hacer a continuación:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Copiar clave pública mediante copia segura
1. Primero, configure una conexión SSH con el usuario remoto:
ssh [email protected]_host
2. A continuación, cree el ~/.ssh
directorio así como las authorized_keys
archivo:
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
3. Usa el chmod comando para cambiar el permiso del archivo:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
chmod 700
hace que el archivo sea ejecutable , mientras que chmod 600
permite al usuario leer y escribir el archivo.
4. Ahora, abra una nueva sesión de terminal, en la computadora local.
5. Copie el contenido de id_rsa.pub key
(la clave pública SSH) a las authorized_keys
creadas previamente archivo en el servidor CentOS remoto escribiendo el comando:
scp ~/.ssh/id_rsa.pub [email protected]_host:~/.ssh/authorized_keys
Con esto, la clave pública se ha almacenado de forma segura en la cuenta remota.
Copiar clave pública manualmente
1. Para agregar manualmente la clave SSH pública a la máquina remota, primero debe abrir el contenido desde ~/.ssh/id_rsa.pub
archivo:
cat ~/.ssh/id_rsa.pub
2. Como en la imagen a continuación, la clave comienza con ssh-rsa y termina con el nombre de usuario de la computadora local y el nombre de host de la máquina remota:
3. Copie el contenido del archivo, ya que lo necesitará más adelante.
4. Luego, en la ventana de la terminal, conéctese al servidor remoto en el que desea copiar la clave pública. Utilice el siguiente comando para establecer la conexión:
ssh [email protected]_host
5. Cree un directorio ~/.ssh y claves_autorizadas archivo en el servidor CentOS con el siguiente comando:
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
6. Cambie su permiso de archivo escribiendo:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
7. A continuación, abra authorized_keys
archivo con un editor de su preferencia. Por ejemplo, para abrirlo con Nano, escriba:
nano authorized_keys
8. Agrega la clave pública, previamente copiada en el paso 2 de esta sección, en una nueva línea en (debajo del contenido existente).
9. Guarde los cambios y cierre el archivo.
10. Finalmente, inicie sesión en el servidor para verificar que todo esté configurado correctamente.
Paso 3:Conéctese al servidor remoto mediante claves SSH
Una vez que haya completado los pasos anteriores (crear un par de claves RSA y copiar la clave pública en el servidor CentOS), podrá conectarse al host remoto sin escribir la contraseña de la cuenta remota.
Todo lo que necesita hacer es escribir el siguiente comando:
ssh [email protected]_host
Si no especificó una frase de contraseña al crear el par de claves SSH, iniciará sesión automáticamente en el servidor remoto.
De lo contrario, escriba la frase de contraseña que proporcionó en los pasos iniciales y presione Intro. .
Una vez que el shell confirme la coincidencia de clave, abrirá una nueva sesión para la comunicación directa con el servidor.
Paso 4:deshabilite la autenticación de contraseña
Aunque logró acceder al servidor CentOS sin tener que proporcionar una contraseña, todavía tiene un sistema de autenticación basado en contraseña ejecutándose en la máquina. Esto lo convierte en un objetivo potencial para los ataques de fuerza bruta.
Debe deshabilitar la autenticación de contraseña por completo siguiendo los pasos descritos.
1. Con las claves SSH, inicie sesión en el servidor CentOS remoto que tiene privilegios administrativos:
ssh [email protected]_host
2. A continuación, abra el archivo de configuración del demonio SSH utilizando un editor de texto de su elección:
sudo nano /etc/ssh/sshd_config
3. Busque la siguiente línea en el archivo:
PasswordAuthentication yes
4. Edite la configuración cambiando yes
valor a no
. Por lo tanto, la directiva debería ser la siguiente:
PasswordAuthentication no
5. Guarde el archivo y salga del editor de texto.
6. Para habilitar los cambios, reinicie el sshd servicio usando el comando:
sudo systemctl restart sshd.service
7. Verifique que la conexión SSH al servidor aún funcione correctamente. Abra una nueva ventana de terminal y escriba el comando:
ssh [email protected]_host