IBM Cloud Docs
Generación y uso de claves SSH para la autenticación de host remoto

Generación y uso de claves SSH para la autenticación de host remoto

Las claves SSH son una forma de identificarse en un servidor SSH que utilice la criptografía de claves públicas y la autenticación de respuesta de verificación de identidad. Una ventaja inmediata de este método en comparación con la autenticación de contraseñas tradicional es que el servidor puede autenticarlo sin necesidad de enviar la contraseña por la red. También puede utilizarlo con la automatización, ya que permite la comunicación con el servidor de forma desatendida.

Generación de claves SSH en Linux

Para generar una clave SSH en el servidor Linux , ejecute el mandato ssh-keygen. El mandato puede tomar distintivos si desea personalizar el tipo de clave que se genera y los algoritmos de firma que se utilizan para generar la clave. Este ejemplo genera una clave RSA de 2048 bits estándar sin frase de contraseña. El mandato le solicita la ubicación para almacenar la clave (el valor predeterminado es $HOME/.ssh/) y una frase de contraseña para proteger la clave SSH.

root@bck2:/etc# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@bck2.example.com
The key's randomart image is:
+---[RSA 2048]----+
|.  oo*%=+o..     |
|.++.oX+=. .      |
|..+ooo=. .       |
|   E.+. .o.      |
|    +   S..+     |
|     . +. =      |
|      o  = o     |
|      .o+ +      |
|       +o.       |
+----[SHA256]-----+

Copia de la clave pública en los hosts remotos

Para autenticarse con un host remoto utilizando la clave SSH pública para utilizar el mandato ssh-copy-id . Utilice el distintivo -i para especificar la clave pública que va a copiar en el host remoto.

root@bck2: # ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.176.18.15
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.176.18.15 (10.176.18.15)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.

Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.176.18.15's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@10.176.18.15'"
and check to make sure that only the key(s) you wanted were added.

El mandato ssh-copy-id añade las claves al archivo .ssh/authorized_key del host remoto.

Prueba de que la clave se ha copiado correctamente

Para probar que la clave pública se ha copiado correctamente en el host remoto, ssh en el host remoto.

root@bck2:/etc# ssh root@10.176.18.15
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-53-generic x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

Last login: Fri Feb 10 16:51:51 2017 from 169.46.3.91
root@bck1:~#

No se le solicitará la contraseña cuando realice ssh en el host remoto.

Claves SSH con una frase de contraseña

Proporcionar una frase de contraseña para la clave SSH proporciona una capa adicional de seguridad, pero también puede provocar problemas cuando se ejecutan scripts automatizados que requieren la clave protegida.

El agente ssh puede gestionar las claves. Sólo debe especificar la frase de contraseña una vez. ssh-agent conserva la clave en su memoria y la recupera cuando es necesaria. Si desea que el agente ssh gestione las claves, emita el mandato siguiente:

eval $(ssh-agent)

Después de que el programa inicie el mandato ssh-add para añadir la clave pública al agente, el programa de utilidad ssh-add busca los nombres de clave predeterminados, de los cuales id_rsa es uno, y los añade al agente ssh. Después de escribir la contraseña, la clave "desbloqueada" se almacena con ssh-agent y se puede utilizar para autenticarse en otros servidores.

root@bck1:~# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
root@bck1:~#

Cada vez que abra una nueva sesión de terminal, se le solicitará la frase de contraseña de clave. Considere la posibilidad de ejecutar los mandatos siguientes para añadir el archivo .bash_profile para que ssh-agent se inicie con cada sesión bash y añada la clave.

echo ‘eval $(ssh-agent)’ >> ~/.bash_profile
echo ‘ssh-add’ >> ~/.bash_profile