Creación de un par de claves pública/privada para ssh

Vamos a crear un par de claves pública/privada para usar exclusivamente en el rsnapshot de nuestro host:

SHORTHOST=`hostname -s`
ME=rsnapshot@${SHORTHOST}
sudo ssh-keygen -b 2048 -t rsa -C "${ME}" -N "" -f /root/.ssh/${SHORTHOST}_rsnapshot_rsa_id

Esto creó una nueva clave RSA de 2048 bits sin passphrase en /root/.ssh/rsnapshot_rsa_id. Este archivo hay que guardarlo muy celosamente ya que no está encriptado.

En /root/.ssh/rsnapshot_rsa_id.pub quedó la clave pública con el comentario rsnapshot@XXX donde XXX es el nombre del host donde generamos la clave.

Ahora necesitamos dos cosas:

  1. Que la cuenta root del equipo donde corre rsnapshot conozca la clave pública ssh de host de cada equipo a los que se tiene que conectar (en caso contrario, la primera vez que se intente conectar va a quedar a la espera de confirmación para aceptar la clave pública que le ofrezca el host).

  2. Que la cuenta root de cada equipo que se vaya a backupear acepte la clave pública que enviará el rsnapshot (que será esta que recién creamos).

Agregar clave pública ssh de host de cada equipo

En cada equipo al que nos vayamos a conectar debemos ejecutar:

SHORTHOST=`hostname -s`
(echo -n "${HOSTNAME} "; cat /etc/ssh/ssh_host_rsa_key.pub) > ${SHORTHOST}_ssh_host_rsa_key.pub

Esto nos dará una línea muy larga que comienza con el nombre del equipo, luego dice ssh-rsa y al final dice root@nombre-de-equipo.

En el equipo donde se ejecuta rsnapshot debemos agregar al archivo /root/.ssh/known_hosts esta línea.

  • Asegurarse de que esté todo en una sola línea

  • Asegurarse de que el nombre de equipo que aparece al principio de la línea se corresponda con el nombre que usaremos para conectarnos a dicho equipo (si el nombre es otro, editarlo en /root/.ssh/known_hosts).

Esto hay que hacerlo para cada equipo al querramos backupear con rsnapshot.

sudo sh -c "cat *_ssh_host_rsa_key.pub >> /root/.ssh/known_hosts"
sudo chown -v root:root /root/.ssh/known_hosts /root/.ssh
sudo chmod -v 0644 /root/.ssh/known_hosts
sudo chmod -v 0700 /root/.ssh

Permitir al rsnapshot conectarse con su clave privada a cada host

En cada equipo al que nos vayamos a conectar debemos editar el archivo de configuración del server sshd que está en /etc/ssh/sshd_config y verificar que se pueda loguear como root.

Buscar una línea (no comentada) que comience con PermitRootLogin. Si la línea no existe, entonces no hay problema (el default es yes).

PermitRootLogin yes

Si figura

PermitRootLogin no

es que no permite logins como root. Lo más conveniente en este caso es habilitar los logins como root pero únicamente sin password (esto es más seguro porque sólo podrán conectarse utilizando una clave privada cuya clave pública correspondiente sea aceptada por el usuario root:

PermitRootLogin without-password

Si se cambió algo, reiniciar el servidor ssh

sudo invoke-rc.d ssh restart

Ahora tenemos que agregar la clave pública del host que se va a conectar (el que corre el rsnapshot) a la lista de claves autorizadas de la cuenta root

sudo mkdir -pv /root/.ssh/
sudo sh -c "cat *_rsnapshot_rsa_id.pub >> /root/.ssh/authorized_keys"
sudo chown -v root:root /root/.ssh/authorized_keys /root/.ssh
sudo chmod -v 0600 /root/.ssh/authorized_keys
sudo chmod -v 0700 /root/.ssh

BackupConRsnapshot/ClavesSsh (última edición 2009-05-30 12:48:04 efectuada por MarianoAbsatz)

Edit and actions menu

  • Página inmutable
  • Información
  • Adjuntos