Hiparco

Recetas y trucos de GNU/Linux e informática en general

Alojado en http://guimi.net

Confianza ssh

Introducción

Vamos a ver como hacer que el usuario de una máquina con servidor SSH (“servidor”) confíe en unas claves SSH. De esta manera podemos acceder al equipo sin utilizar un par usuario/password del servidor.

Si además los ficheros de claves ssh no tienen “passphrase” las conexiones ssh (ssh, scp…) se realizarán sin preguntar nada al usuario. Esto es cómodo pero altamente peligroso y desaconsejado.

Lo que se recomienda es no permitir acceso usuario/clave al servidor sino solo por ficheros ssh y que éstos tengan clave (passphrase).
De esta forma para acceder al equipo hace falta disponer de algo (fichero de claves) y conocer algo (passphrase).

[Configuración de ssh]

Notas

  • La confianza la establece un usuario concreto del equipo “servidor”.
  • El servidor debe estar configurado para aceptar confianzas (por omisión lo está).
  • Recordemos que la clave pública (id_rsa.pub), no hace falta protegerla, es pública y puede transmitirse en claro si es necesario.
  • Recordemos que la clave privada (id_rsa) es fundamental protegerla, es privada y solo debe transmitirse por medios seguros. Éste es el fichero que tendremos que llevar con nosotros para conectar con el servidor y que deberemos proteger con la passphrase.
  • Si se accede a diferentes servidores los ficheros de clave privada pueden renombrarse libremente, por ejemplo como id_rsa-servidor.
  • Un mismo usuario de un mismo servidor puede disponer de diferentes pares de claves
  • Una confianza (par de claves) puede configurarse para incluir limitaciones

Configuración

Primero generamos las claves ssh (esto se puede hacer desde cualquier equipo):

$ ssh-keygen -t rsa

Esto generará una clave privada (id_rsa) y una clave pública (id_rsa.pub).

Después autorizamos en el servidor el acceso a la clave pública.

$ cat cat .ssh/id_rsa.pub >> .ssh/authorized_keys

Ajustamos los permisos:

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/*
$ chmod g-w ~/

Opcionalmente se pueden incluir opciones en la clave autorizada, como command=”command”, no-pty, no-port-forwarding… (man sshd).

Uso

Desde cualquier equipo si se dispone de la clave privada (id_rsa) de puede acceder al servidor mediante:

$ ssh usuario@servidor -i id_rsa
$ scp usuario@servidor:ruta_relativa_a_home/fichero .
$ ssh usuario@servidor -i id_rsa ‘comando a ejecutar remotamente’

También puede utilizarse toda la potencia de ssh, por ejemplo:

$ ssh usuario@servidor -p x -N -f -i id_rsa -L 5901:localhost:5901

 

Se recomienda cambiar la passphrase regularmente.
Para cambiar (o des/asignar) una passphrase de un fichero de claves hacemos:

$ ssh-keygen -p -f .ssh/id_rsa

 

Cliente PuTTY para Windows

Para usar la clave en PuTTY (Windows):

  1. Copiamos la clave privada al equipo
  2. Usamos PuTTYGen para importar la clave y guardarla como .ppk
    • Conversions->Import key
    • Introducir la passphrase
    • Pulsar “Save private key” y guardarla con extensión .ppk
  3. Al hacer la conexión, en el menú SSH->Auth seleccionamos nuestro fichero .ppk
  4. Si al conectar muestra el error “Key is of wrong type (PuTTY SSH2 private key)“, seleccionar en PuTTY Connections->SSH el protocolo “2”.

Otros artículos relacionados

Configuración de ssh
Túneles SSH
Uso de ssh
Uso de scp
sshfs – Montando recursos mediante SSH y FUSE

ssh, putty, clave, confianza, rsa