Ssh-sftp-scp Sin Password

4
Conectarte por SSH, SFTP o SCP sin password Identificación del cliente mediante clave pública y certificados Nota importante: Este procedimiento sirve solo en un solo sentido en este ejemplo del usuario1 de la máquina A a la B. No es recíproco de B a A. Al realizar el proceso de B a A se invalida de A a B. Tampoco es válido para todos los usuarios de A solo uno por vez. Al realizar el proceso con un segundo usuario de A hacia B por ejemplo usuario2 de A se invalida usuario1. El cliente puede identificarse mediante clave pública, sin password. En el ejemplo siguiente la idea es que el usuario francis de la máquina cliente asterix se conecte por ssh a la máquina servidor obelix (de usuario mario) sin contraseña Para esto creamos en el cliente una clave RSA: Veamos vamos a genera nuestras claves y los certificados: máquina asterix usuario francis francis@asterix:~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa activamos ssh-agent en el cliente para que no nos pida la pass-phrase: francis@asterix:~$ eval 'ssh-agent -s' SSH_AGENT_PID=4413; export SSH_AGENT_PID; echo Agent pid 4413; francis@asterix:~$ ssh-add Enter passphrase for /home/francis/.ssh/id_rsa: Identity added: /home/francis/.ssh/id_rsa (/home/francis/.ssh/id_rsa) Ahora vamos a copiar la clave pública en el servidor la otra máquina que en este ejemplo es obelix: ~/.ssh/id_rsa.pub colocamos la passphrase Enter passphrase for /home/francis/.ssh/id_rsa: Identity added: /home/francis/.ssh/id_rsa (/home/francis/.ssh/id_rsa) francis@asterix:~$ scp -P 33322 ~/.ssh/id_rsa.pub mario@obelix:~/.ssh/id_rsa.pub The authenticity of host '[192.168.13.30]:33322 ([192.168.13.30]:33322)' can't be 1-4

description

suite ssh manejo con certificados.Ejemplo desarrollado.

Transcript of Ssh-sftp-scp Sin Password

Page 1: Ssh-sftp-scp Sin Password

Conectarte por SSH, SFTP o SCP sin password

Identificación del cliente mediante clave pública y certificados

Nota importante:

Este procedimiento sirve solo en un solo sentido en este ejemplo del usuario1 de la máquina A a la B.No es recíproco de B a A.Al realizar el proceso de B a A se invalida de A a B.Tampoco es válido para todos los usuarios de A solo uno por vez.Al realizar el proceso con un segundo usuario de A hacia B por ejemplo usuario2 de A se invalida usuario1.

El cliente puede identificarse mediante clave pública, sin password.

En el ejemplo siguiente la idea es que el usuario francis de la máquina cliente asterix se conecte

por ssh a la máquina servidor obelix (de usuario mario) sin contraseña

Para esto creamos en el cliente una clave RSA:

Veamos vamos a genera nuestras claves y los certificados:máquina asterixusuario francis

francis@asterix:~$ ssh­keygen ­t rsa ­f ~/.ssh/id_rsa

activamos ssh-agent en el cliente para que no nos pida la pass-phrase:

francis@asterix:~$ eval 'ssh­agent ­s'SSH_AGENT_PID=4413; export SSH_AGENT_PID;echo Agent pid 4413;francis@asterix:~$ ssh­addEnter passphrase for /home/francis/.ssh/id_rsa:Identity added: /home/francis/.ssh/id_rsa (/home/francis/.ssh/id_rsa)

Ahora vamos a copiar la clave pública en el servidor la otra máquina que en este ejemplo es obelix:

~/.ssh/id_rsa.pub

colocamos la passphrase

Enter passphrase for /home/francis/.ssh/id_rsa: Identity added: /home/francis/.ssh/id_rsa (/home/francis/.ssh/id_rsa)

francis@asterix:~$ scp ­P 33322 ~/.ssh/id_rsa.pub mario@obelix:~/.ssh/id_rsa.pub

The authenticity of host '[192.168.13.30]:33322 ([192.168.13.30]:33322)' can't be 

1-4

Page 2: Ssh-sftp-scp Sin Password

established.ECDSA key fingerprint is 0f:81:87:28:ee:1e:c4:59:e3:6e:89:c5:08:64:c3:7c.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '[192.168.13.30]:33322' (ECDSA) to the list of known [email protected]'s password: id_rsa.pub                                                   100%  393     0.4KB/s00:00

eventualmente si nos deniega el acceso en forma local o remota ejecutamos en obelix ya que esta carpeta y su contenido puede estar en propiedad de root

sudo chown ­R mario .ssh

Luego siguiendo con nuestro proceso la añadimos en el servidor la clave id_rsa.pub (la máquina obelix) al final del archivo authorized_keys:

~/.ssh/authorized_keys

o en forma local en la obelix o remotamente por

$ ssh ­p 33322 mario@obelix

Para esto nos logueamos colocando el passwd por última vez y ejecutamos (eventualmente tendremos que crear el directorio .ssh en el directorio ~/ (home de mario) en la máquina obelix

mario@obelix:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

comprobamos que podemos iniciar una sesión SSH sin password ni pass-phrase:

Nos pedirá la primera vez que coloquemos la passphrase antes utilizada y un cuadro de dialogo si queremos que se bloquee el depósito de claves para que nos pida de nuevo la passsphrase. Ante esto debemos elegir que lo desbloquee si tenemos iniciada sesión y no la pedirá mas.

Eventualmente la versión o configuración debemos indicarle que y/o en donde saca la clave o certificado que podría estar en otro directorio de la siguiente manera:

ssh ­p 33322 ­i /home/francis/.ssh/id_rsa mario@obelix

francis@asterix:~$ ssh ­p 33322 mario@obelixmario@obelix:~$

para salir de la sesión SSH teclearemos exit, retornando al shell de la máquina cliente:

mario@obelix:~$ exitlogoutConnection to obelix closedfrancis@asterix:~$

2-4

Page 3: Ssh-sftp-scp Sin Password

Directorio de usuario encriptado

Si tenemos un directorio de usuario cifrado, SSH no puede acceder a su archivo authorized_keys porque está dentro de su directorio personal cifrado y no estará disponible hasta después de que se hayaautenticado.Por lo tanto, SSH por defecto para la autenticación de contraseña.

Para solucionar esto, cree una carpeta fuera del home de usuario:

/etc /ssh/ <username>

(reemplazar "<username>" con su nombre de usuario actual.

Este directorio debe tener permisos 755 y ser propiedad del usuario.Mover el archivo authorized_keys en ella.El archivo authorized_keys debe tener permisos 644 y ser propiedad del usuario.

A continuación, edite el archivo y añada:

/etc/ssh/sshd_config

AuthorizedKeysFile    /etc/ssh/%u/authorized_keys

Reiniciar el servicio ssh la próxima vez que se conecte con SSH usted no debería tener que introducir lacontraseña.

Ejecutar remotamente un shutdown -h now en un script sin passwd

El sudo shutdown ­h now que inevitablemente pide la contraseña de sudo. Así de sencillos son los pasos usar el comando:

sudo visudo

Buscar la linea que pone y añadir tu usuario que tendrá ese privilegio la linea quedará:

# User alias specification"User_Alias USERS = tuusuario

Ahora buscamos la línea y añadir una lista de comandos deseada como la siguiente:

# Cmnd alias specification" Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/reboot, /sbin/halt

Luego buscar la línea que contiene y añadir el comando:

"%admin ALL=(ALL) ALL"SHUTDOWN_CMDS

3-4

Page 4: Ssh-sftp-scp Sin Password

que dejaremos al usuario ejecutar sin contraseña de la siguiente manera:

%admin ALL=(ALL) ALLUSERS ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

Ya no preguntará la contraseña de sudo para ese usuario.Se puede añadir el privilegio a mas usuarios añadirlos después de ese usuario (en el punto 2) con una coma de la forma:

User_Alias USERS = tuusuario, otro_usuario

Después de esto, al poner en el script remoto

"ssh tuusuario@servidor sudo shutdown ­h now"

se apaga el servidor sin solicitar la contraseña de sudo y hace posible el apagado remoto.

4-4