Poder acceder a nuestros servidores utilizando el par de claves pública/privada no es solo útil pra no tener que estar introduciendo la contraseña cada vez que accedemos, sino por que a lo mejor necesitamos ejecutar un script de shell que tiene que mover datos o ficheros entre servidores. Vamos a ver como hacerlo.
Crear las claves pública y privada
Lo hacemos desde el directorio $HOME del usuario del servidor
# ssh-keygen -b 4096 -t rsa
Se genera entonces las dos claves con el sistema RSA en el directorio oculto .ssh : $HOME/.ssh/id_rsa , $HOME/.ssh/id_rsa.pub
Copiamos la clave pública al servidor o host
Y esa clave la almacenamos en el fichero ‘authorized_keys, dentro de .ssh (los permisos tienen que ser 600 , es decir #chmod 600 .ssh/authorized_keys) Comprobar «muy importante», que el direcorio oculto .ssh del directorio $HOME del usuario tenga los permisos a 700 (# chmod 700 $HOME/usuario/.ssh )
# scp .ssh/id_rsa.pub ip_servidor:.ssh/clave_new
# ssh ip_servidor
# cd .ssh/
# cat clave_new >> authorized_keys
# rm clave_new
La primera vez que se accede a un servidor se guarda su host_key en el fichero $HOME/.ssh/know_hosts.
Entonces ya podemos utilizar ssh y scp con ese servidor sin tener que proporcionar la clave en cada conexión. Esto lo tenemos que hacer con cada servidor, y sirve a la par también de forma recíproca.
Si queremos hacer lo mismo con un cliente Windows y estamos usando Putty para acceder vía ssh, en la web de Putyy tenemos la aplicación Puttygen , para generar el par de claves pública/privada. Hacemos lo mismo que lo anterior, añadir la clave pública a ‘authorized_keys’ del servidor. Pero copiamos la que viene indicada como : ‘ Public Key for pasting into openSSH authorized_keys file ‘ , no la que hemos guardado con el botón. Ver imagen.
Otra opción :
Genera clave si contraseña
#ssh-keygen -t dsa
se han generado dos archivos :
ssh/id_dsa.pub (clave pública) .ssh/id_dsa (clave privada)
Ahora se copia su clave pública al servidor:
# sshcopyid i .ssh/id_dsa.pub usuario@servid
Su clave pública se copia en .ssh/authorized_keys de /home/usuario en el servidor.
Ahora se puede hacer login sin introducir password