Conexión sin clave en ssh

Si queremos que una máquina se conecte de forma automática a otra, podemos usar las claves privada y pública para realizar esta tarea. Esta característica es de gran utilidad para los sysadmin, ya que desde su máquina de administración pueden ingresar a los distintos servidores sin necesidad de autenticación.

Supongamos que tenemos un servidor master y que es necesario ingresar sin autenticación a un servidor slave.

Las claves pública (id_rsa.pub) y privada (id_rsa) se generan con el programa: ssh-keygen. Estas claves se almacenan en nuestro home dentro del directorio .ssh/.

1. Generando las nuevas SSH keys.

 jolth@master:~$ ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/jolth/.ssh/id_rsa):
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/jolth/.ssh/id_rsa.
 Your public key has been saved in /home/jolth/.ssh/id_rsa.pub.
 The key fingerprint is:
 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx jolth@master
 The key's randomart image is:
 +--[ RSA 2048]----+
 |                 |
 |                 |
 |                 |
 |       x         |
 |        x    x   |
 |       x x xx xxx|
 |        x x xxxxx|
 |           x xxxx|
 |           xxxxxx|
 +-----------------+

No ingresamos passphrase para no tener que escribir la contraseña la primera vez que nos conectemos.

2. Copiando nuestra public key.

Seguido tenemos que copiar nuestra “clave pública” en la máquina que queremos ingresar sin clave, en el fichero “/home/usuario/.ssh/authorized_keys“, del usuario con el que nos queremos autenticar.

 jolth@master:~$ scp .ssh/id_rsa.pub admin@slave:.ssh/authorized_keys

3. Testing

Con esto ya podemos conectarnos desde el servidor master al servidor slave con el usuario admin sin autenticar contraseña:

 jolth@master:~$ ssh admin@slave
 admin@slave:~$

Si queremos que la máquina master sea la única que se pueda conectar con slave, podemos modificar los siguiente ficheros:

 root@slave:/home/jolth# echo "# MAQUINAS" >> /etc/hosts
 root@slave:/home/jolth# echo "192.168.1.10 master" >> /etc/hosts
 root@slave:/home/jolth# echo "sshd: master" >> /etc/hosts.allow
 root@slave:/home/jolth# echo "sshd: ALL" >> /etc/hosts.deny

Además con esta característica podemos ejecutar comandos remotamente desde el servidor master en el servidor slave:

 jolth@master:~$ ssh admin@slave 'ls -l'

Author: Jolth

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s