Tecnolack - blog de cultura geek

Administrando servers Linux: SSH Key

account_circle Por Sagara access_time 18 de junio del 2013

openssh

Si estas programando un script y necesitas conectarte por medio de ssh a otro servidor sin usar una contraseña o simplemente no quieres estar escribiéndola para conectarte al servidor remoto, puedes utilizar un public-key para conectarte sin necesidad de proporcionar el password.

Ejemplo, digamos que en tu server local tienes al usuario ‘root’ con el cual te quieres conectar a un servidor remoto usando el usuario ‘sagara’.

Vamos a cubrir la mayoría de los aspectos para realizar esta tarea en una serie de pasos muy sencillos:

 

Revisar keys ya existentes

Si te encuentras con los archivos id_rsa y id_rsa.pub en ~/.ssh quiere decir que ya se ha generado un key con anterioridad para dicho usuario. Por lo que no tienes que crear nuevamente el key o dejara de funcionar la autenticación remota de scripts o usuarios que estén utilizando esta key en otros servidores remotos. En tal caso no generes la key y ve al paso de la instalación.

ls -la ~/.ssh 

ls-la

En este caso no tenemos dichos archivos proseguimos a generar la key.

 

Generar la key


Para generar la key simplemente usa el comando:
ssh-keygen

ssh-keygen

Presiona la tecla ‘Enter’ para usar el directorio por default que es el home del usuario local (root) y no escribas una passphrase, solo presiona ‘Enter’ y una vez mas para confirmar.

Si escribes un passphrase vas a tener que ponerla cada vez que intentes entrar al servidor remoto, algo así como ingresar una contraseña.

 

Instalar la key

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-host

Reemplaza ‘user@remote-host’ por el usuario remoto y el host remoto a donde intentas entrar como ‘sagara@servidor.remoto.com’ y seguidamente ingresa la contraseña del usuario ‘sagara’:

ssh-copy-id

Si el usuario remoto no tiene un directorio en /home te va a salir un mensaje como este:

Could not chdir to home directory /home/sagara: No such file or directory
mkdir: cannot create directory `.ssh': Permission denied
bash: .ssh/authorized_keys: No such file or directory

Para corregir esto puedes, aunque no lo recomiendo tanto, eliminar el usuario y volver a crearlo con un home:

userdel sagara
useradd -m sagara
passwd sagara

O puedes asignarle un home al usuario sin tener que eliminarlo:

mkdir /home/sagara
usermod -d /home/sagara -m sagara

Si por alguna razón ssh-copy-id te dice algo como ssh-copy-id command not found, manualmente haz un scp del archivo ‘id_rsa.pub’ al home del usuario remoto y después añade su contenido al final del archivo ‘ssh/authorized_keys’:

scp ~/.ssh/id_rsa.pub sagara@servidor.remoto.com:/home/sagara/
cat id_rsa.pub >> /home/sagara/.ssh/authorized_keys

Usa doble mayor que (>>) para añadir, si usas uno solo (>) vas a sobrescribir todo el contenido de ‘authorized_keys’.

 

Prueba la conexión y has un cache del host remoto

ssh sagara@servidor.remoto.com

Al hacerlo por primera vez cuando te salga este mensaje tienes que escribir yes:

The authenticity of host 'servidor.remoto.com (192.168.0.1)' can't be established.
RSA key fingerprint is **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**.
Are you sure you want to continue connecting (yes/no)? YES
Warning: Permanently added 'servidor.remoto.com (192.168.0.1)' (RSA) to the list of known hosts.

Esto va a hacer que el servidor se agregue al archivo ‘.ssh/known_hosts’ y ya no hará de nuevo esta pregunta.

 

Comprobar permisos

Para terminar solo comprueba los permisos del directorio ‘~/.ssh’ a 700 y del archivo ‘authorized_keys’ a 600:

ls -la ~/ | grep ssh
drwx------  2 sagara sagara     4096 May 18  2011 .ssh
ls -la ~/.shh
drwx------  2 sagara sagara 4096 May 18  2011 .
drwxr-xr-x 14 sagara sagara 4096 Jun 17 23:25 ..
-rw-r--r--  1 sagara sagara 2612 Oct 27  2011 authorized_keys
-rw-------  1 sagara sagara 3239 Oct 27  2011 id_rsa
-rw-r--r--  1 sagara sagara  738 Oct 27  2011 id_rsa.pub
-rw-r--r--  1 sagara sagara 4604 Jun  6 09:44 known_hosts
 

Y listo, habrás entrado al servidor remoto sin tener que proporcionar una contraseña.

Fuente | The Geek Stuff

@Mail
Recibe actualizaciones vía email.