Cómo conectarse de un servidor (*nix o Mac OSX) a otro, sin contraseña (Actualización)
Actualización:
Después de generar la llave (id_rsa
y id_rsa.pub
; descrito más abajo), también se le puede copiar al servidor remoto usando ssh-copy-id
:
usuario@local:~>ssh-copy-id -i ~/.ssh/id_rsa.pub visitante@remoto
visitante@remoto´s password:
Now try logging into the machine, with "ssh 'visitante@remoto'", and check in:
.ssh/authorized_keys
to make sure we haven´t added extra keys that you weren´t expecting.
Esto agregará la llave al final de la lista de servidores autorizados (authorized_keys).
Importante: Si tienes más de una llave privada en tu equipo local, asegúrate de agregrar esta llave privada (id_rsa
) a las identidades registadas en el equipo local:
$ ssh-add id_rsa
O si ocupas OSX, es mejor agregarlo al KeyChain:
$ ssh-add -K ~/.ssh/id_rsa
Si por algún motivo ssh-add no está funcionando lo más probable es que ssh-agent no esté activo. Para activarlo:
$ eval `ssh-agent -s`
Para obtener una lista de identidades (llaves) registradas:
$ ssh-add -l
Escenario:
Quieres ocupar OpenSSH para que un ‘usuario’ en el equipo ‘local’ pueda acceder como ‘visitante’ en el equipo ‘remoto’, sin tener que ingresar la contraseña de ‘visitante’ cada vez.
Procedimiento:
Primero en ‘local’, generamos un par de llaves de autentificación. IMPORTANTE: Dejar la contraseña (passphrase) en blanco.
usuario@local:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa):
Created directory '/home/usuario/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/id_rsa.
Your public key has been saved in /home/usuario/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A
Ahora, nos conectamos como ‘visitante’ usando ssh al equipo ‘remoto’ y creamos (si es que no existe) el directorio ~/.ssh
.
usuario@local:~> ssh-keygen -t rsa
usuario@local:~> ssh visitante@remoto mkdir -p .ssh
visitante@remoto's password:
Finalmente, agregamos la llave púbilca creada al archivo visitante@remoto:.ssh/authorized_keys
, e ingresamos la contraseña de ‘visitante’ una última vez:
usuario@local:~> cat .ssh/id_rsa.pub | ssh visitante@remoto 'cat >> .ssh/authorized_keys'
visitante@remoto's password:
Con versiones más modernas de OpenSSH, es necesario ocupar el archivo .ssh/authorized_keys2
y asegurarse que la carpeta y el archivo tengan los permisos apropiados:
usuario@local:~> cat .ssh/id_rsa.pub | ssh visitante@remoto 'cat >> .ssh/authorized_keys2'
visitante@remoto's password:
Y, ahora cambiamos los permisos
usuario@local:~> ssh visitante@remoto
visitante@remoto:~> chmod 700 .ssh
visitante@remoto:~> chmod 640 .ssh/authorized_keys2
Eso es todo! En adelante el ‘usuario’ podra conectarse como ‘visitante’ al equipo remoto sin ocupar una contraseña en cada oportunidad.