miércoles, 27 de noviembre de 2019

SHH : Ejecutar comandos y hacer copias desatendidos de ficheros remotos

0. Introducción

Quiero hacer unas copias de ficheros de forma desatendida desde un servidor remoto.
Para ello se ha pensado en ssh.  Pero cada vez que conectamnos nos pide que introduzcamos a mano una contraseña, con lo que la opción de realizar-lo en un CRON-TAB queda descartada.

1. Opcion 1: sshpass


Se instala este programa y se simula que se introduce la contraseña. Ver serverfault 


$ sudo apt-get install sshpass
$ sshpass -p your_Password12345 ssh user@hostname

No se hasta que punto puede funcionar en sistemas heterogeneos (widows-linux) o si existe una version adecuada a windows de sshpass

2. Opción2: compartición de claves RSA


Para ello se actúa así:

0. Comprobar que esté Openssh instalado tanto en el cliente como en el servidor, ejecutando el comando


ssh -V


1. Generar claves en la màquina local


ssh-keygen -t rsa -b 4096 -R 192.XXX.XXX.XXX              
     # Generating public/private rsa key pair. 
     # Enter file in which to save the key (/home/ximo/.ssh/id_rsa):
     # /home/ximo/.ssh/id_rsa already exists.
     Overwrite (y/n)? n

2. Copiar las claves al servidor remoto

ssh-copy-id myuser@192.XXX.XXX.XXX     
     #/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
     #/usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys
     
     myuser@192.XXX.XXX.XXX's password: 
#Number of key(s) added: 2 #Now try logging into the machine, with: "ssh 'myuser@192.XXX.XXX.XXX'" # and check to make sure that only the key(s) you wanted were added.


3. Ejecutar el ssh sobre el servidor remoto

ssh myuser@192.XXX.XXX.XXX                 
# Entramos ya sin pedir contraseña


========================================================================
Esto que viene a continuación es antiguo y ha quedado desfasado



1. Crear el directorio ~/.ssh en la máquina cliente (Nota ~ es el directorio de usuario /home/myuser).

2. Generar la clave rsa en dicha carpeta del cliente y pedirá una contraseña (por ejempo your_Password12345) que se tendrá que guardar. Se generará en el fichero ~/.ssh/id_rsa.pub


client$    ssh-keygen -q -f ~/.ssh/id_rsa -t rsa

3. Desde el cliente copiamos la clave al servidor remoto


client$    scp ~/.ssh/id_rsa.pub  remoteUser@remoteServer_ip:   # No olvidar los 2 puntos ":"      

y nos pedirá la contraseña de remoteUser (que tiene en el remoteServer)

4. en el servidor hacemos un append (añadimos al final del fichero) dicha clave  al fichero ~/.ssh/authorized_keys y le añadimos finalmente una línea en blanco


server$    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
server$    echo "" >> ~/.ssh/authorized_keys  # y metemos una linea en blanco!!! MUY IMPORTANTE
server$    rm ~/id_rsa.pub                    # y borramos el fichero que hemos descargado

5. Ejecutamos la primera vez en el cliente el acceso al servidor y nos pedirá la contraseña que le hemos dado al generar la clave rsa (en nuestro caso your_Password12345 )


client$    ssh -o PreferredAuthentications=publickey remoteUser@remoteServer_ip

6. Ya podemos entrar con ssh o scp (para copiar ficheros) y ya no nos vuelve a pedir la contraseña

client$    ssh remoteUser@remoteServer_ip

7. Problema: Si rearrancamos la máquina, nos vuelve a pedir la contraseña !!!


No hay comentarios :

Publicar un comentario