Actualización de seguridad (octubre de 2026): el artículo original utiliza claves DSA, que deben considerarse obsoletas para nuevas configuraciones. No reutilices los comandos de generación DSA del ejemplo histórico.
Procedimiento actual recomendado
ssh-keygen -t ed25519 -C "acceso-ssh"
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@servidor
ssh usuario@servidor
Protege la clave privada con una frase de paso, usa un agente SSH cuando corresponda y revisa los permisos de ~/.ssh (700) y de la clave privada (600). El archivo authorized_keys se encuentra en el servidor de destino. No desactives la autenticación por contraseña hasta confirmar que el acceso con clave funciona y disponer de un método de recuperación.
Relacionado: automatizar copias de seguridad con SSH.
Hay veces que tenemos que entrar sucesivamente a una máquina por ssh, y se pierde mucho tiempo en el login. Para ello hay una utilidad de SSH que permite el logueo automático sin que ello signifique decremento de seguridad. Para ello se genera una clave pública y se exporta a la otra máquina, asumiendo el demonio de ssh a partir de entonces el acceso desde esa máquina, con ese usuario y con esa clave, como permitido:
carlos@host1:~$ ssh-keygen -t dsa
carlos@host1:~$ ssh-copy-id -i .ssh/id_dsa.pub pepito@host2
De esta manera el usuario carlos puede entrar en host2 como usuario «pepito» sin tener que teclear siempre la contraseña. Es una solución util para interacciones automática entre sistemas sin tener que almacenar la contraseña del usuario en texto plano, cron o demás.
A parte, es conveniente en sistemas compartidos modificar los permisos de acceso a los ficheros de claves generados para evitar malos usos:
carlos@WhenIGrewUp:~$ chmod 700 .ssh
carlos@WhenIGrewUp:~$ chmod 600 .ssh/authorized_keys
carlos@WhenIGrewUp:~$ chmod 600 .ssh/id_dsa
carlos@WhenIGrewUp:~$ chmod 744 .ssh/id_dsa.pub
En determinadas ocasiones no funciona esta solución. Para ello es conveniente unificar la versión de servidor ssh existente en los nodos. Se puede averiguar facilmente con la utilidad scanssh:
carlos@WhenIGrewUp:~$ sudo scanssh 172.26.9
172.26.0.9:22 SSH-2.0-OpenSSH_4.6p1 Debian-5ubuntu0.6
Effective host scan rate: 3.91 hosts/s
carlos@WhenIGrewUp:~$ sudo scanssh 172.26.5
172.26.0.5:22 SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1
Effective host scan rate: 1.52 hosts/s
carlos@shirley:~$ sudo scanssh 172.26.0.4
172.26.0.4:22 SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Effective host scan rate: 3.33 hosts/s
Otros artículos relacionados: Automatizar respaldos usando SSH
