Estoy configurando un nuevo Sistema de Backups Automáticas para mis servidores.
El primer problema que me he encontrado es que necesitaba crear una conexión transparente mediante SSH.
El protocolo SSH, mediante la utilidad authorized_keys, nos proporciona la posibilidad de autentificar sin contraseña desde un equipo cliente (Willy) a un servidor remoto (Jeffri).
Por ejemplo, queremos acceder desde el cliente WILLY, usando el usuario «cli», al servidor JEFFRI, usando el usuario «serv».
El funcionamiento es el siguiente:
- Generamos una pareja de claves pública/privada en el equipo cliente.
- Indicamos, para un usuario concreto del servidor, la lista de claves públicas de clientes que pueden acceder con la clave privada asociada (sin necesidad de usar contraseña).
El primer paso es ejecutar en el cliente, con el usuario que vayamos a usar en este caso CLI, el siguiente comando:
cli
@willy
:~$ ssh-keygen
cli@willy:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/usuario/.ssh/id_rsa): Created directory '/home/cli/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/cli/.ssh/id_rsa. Your public key has been saved in /home/cli/.ssh/id_rsa.pub. The key fingerprint is: xx:9e:xx:aa:xx:6b:xx:14:xx:xx:7c:5b:xx:8b:xx:53 usuario@jeffri The key's randomart image is: +---[RSA 2048]----+ | | | | | E | | . . o | | o o . S | | + * . . | |.o * . .o . | |..o.+ + + | | .o.+++. . | +-----------------+
Debemos tener en cuenta que para que se realice la conexión transparente mediante SSH debemos dejar en blanco la passphrase, de lo contrario tendríamos que indicarla siempre que queramos loguearnos.
Si no hemos indicado otro directorio, las claves (id_dsa.pub y id_rsa.pub) deberían encontrarse en el directorio /home/cli/.ssh/
Para poder acceder al servidor tenemos que copiar el contenido del fichero id_rsa.pub, en el fichero authorized_keys del directorio $HOME/.ssh/ del usuario del servidor al que necesitamos conectar.
Tendríamos que copiar el contenido del fichero /home/cli/.ssh/id_rsa.pub (ubicado en WILLY), dentro del fichero /home/serv/.ssh/authorized_keys (ubicado en JEFFRI).
Podemos hacerlo fácilmente mediante el siguiente comando.
cli@willy:# scp -P 50000 /home/cli/.ssh/id_rsa.pub serv@jeffri:/home/serv/.ssh/authorized_keys
cli@willy:# scp -P 50000 /home/cli/.ssh/id_rsa.pub serv@jeffri:/home/serv/.ssh/authorized_keys serv@jeffris's password: id_rsa.pub 100% 392 0.4KB/s 00:00
Para confirmar que todo ha funcionado correctamente, intentamos acceder por ssh al servidor remoto.
cli@willy:~/.ssh# ssh -p 50000 serv@jeffri
cli@willy:~/.ssh# ssh -p 50000 serv@jeffri Linux jeffri 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Jul 12 12:05:08 2015 from willy serv@jeffri:~#
Como podéis apreciar, hemos conseguido conectar sin problema al servidor remoto sin que nos solicite contraseña alguna. 🙂
Eso es todo, si os ha resultado útil el post no olvidéis compartir.