En muchas ocasiones, necesitamos realizar script que copie datos de un servidor a otro de forma automática. Normalmente usaríamos ftp para automatizar dichas conexiones pero esta conexion implica que nos conectemos de forma no segura. Alguien podria estar «escuchando«.

Para evitar esto se suele usar SFTP (ftp seguro), lo que implica que nadie escuchará nuestras conexiones.

Si usamos un script, necesitamos automatizar el acceso al servidor, con lo que lo deseable es que no nos pregunte clave de usuario.

Para conseguir ese vamos a realizar lo siguiente.

Generar un par de claves privada/publica en la maquina que ejecuta el script, para autentificarnos en el servidor. Lo haremos con el usuario que va a ejecutar dicho script. Para generar claves RSA escribiremos lo siguiente:

$ ssh-keygen -t rsa

Esto nos generará dos archivos, «id_rsa.pub» e «id_rsd«.

Tenemos que copiar la clave publica generada (id_rsa.pu) en el servidor. Para ello lo haremos con sftp, aunque esta vez nos pida clave. La colocaremos dentro del directorio del usuario (normalmente home/usuario/.ssh/) y la renombraremos como authorized_keys.
Si ya exite ese archivo añadiremos la nueva clave con:

$ cat id_rsa.pub >> .ssh/authorized_keys

Ahora para conectarnos por SFTP (suponemos que hemos cambiado el puerto por defecto del servidor SSH a XXXX)

$ sftp -o Port=XXXX usuario@servidor

Una vez que tengamos hecho esto, tampoco nos haría falta poner clave para conectarnos vía SSH al servidor.

$ ssh -p XXXX usuario@servidor