SSH sin contraseña pero más seguro

Un poco contradictorio el título ¿no? Pues puede verse así. Hablando de temas de seguridad muchas veces (como en todo el mundo de la informática) las cosas cambian mucho según el punto de vista de cada uno.

Lo que voy a explicar de manera breve es algo que vi en 120%Linux, concretamente en éste post, y que me pareció bastante interesante, en gran parte porque me ahorra meter una contraseña bastante veces al día xD

El objetivo es el siguiente: poder logearnos en nuestros servidor a través de ssh sin tener que introducir ninguna contraseña pero manteniendo cierto nivel de seguridad en el servidor. Lo que haremos será eliminar el hecho de introducir la contraseña y añadir la necesidad de indentificarse (de forma automática) mediante una firma RSA que tendremos almacenada. Aquí os va el resumen de lo que tenéis que hacer:

Generar el par de claves RSA (pública y privada):

ssh-keygen -t rsa

nos preguntará la passphrase que queremos usar para éste par de claves y en qué fichero queremos guardar la clave, de forma que guardara con ese nombre la clave privada y con el mismo nombre seguido de .pub la clave pública (por defecto ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub). OJO! si lo que queremos es no tener que meter clave al conectar por ssh debedos dejar el passphrase en blanco.

– Ahora mandaremos la clave pública al servidor:

ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@servidor

– Ya sólo nos queda configurar el servidor. Lo hacemos editando el fichero /etc/ssh/sshd_config y cambiando los siguientes valores:

PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

más o menos se entiende, pero quiero aclarar que si dejamos “PasswordAuthentication no” ya no se podrá entrar en el servidor si no disponemos de la clave privada en la máquina desde la que estamos trabajando. Yo lo he dejado como yes porque alguna vez conecto desde casa de algún amigo y otro colegas míos tienen cuentas ssh en el servidor de mi casa. Tenedlo en cuenta porque afecta a todos los usuarios del sistema.

En el tutorial original añaden éste otro paso más, pero no estoy muy seguro de que haga falta, probad antes de hacerlo y si no os funciona ya sabéis😉 (de paso dejad un comentario para aclararlo :D):

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

– Por último, pero no menos importante, reiniciar el servicio ssh en el servidor así:

sudo /etc/init.d/ssh restart

Y listo. Ahora deberíamos poder logearnos sin problemas como siempre:

ssh usuario@servidor

Podéis hacerlo así para ver todos los mensajes y aseguraros de que está usando el par de claves rsa:

ssh -v usuario@servidor

Si queréis hacer cambios tened en cuenta que no se puede cambiar la passphrase, vamos, si que se puede pero el concepto es distinto: tenéis que generar otro par de claves distintas con otra passphrase y añadirlas. Pero sabed que sino elimináis la clave pública vieja del fichero ~/.ssh/authorized_keys seguirá siendo válida. Podéis hacerlo borrando directamente ese fichero antes de pasarle la clave pública nueva o editándolo se ve bien donde termina una clave y empieza otra.

Que no os engañe el hecho de que no haya que meter contraseña, si controláis bien el acceso a vuestro clave privada es mucho más seguro que la contraseña que usábais hasta ahora.

  1. Buen post, muy util😀

      • andrea
      • 17/06/10

      ola seba soy andi q ablar un rato conmigo

  2. $columns[4]

    • Pame
    • 24/09/09

    que se hace con la llave privada? si la publica se deja en /.ssh como authorized_keys

    • miguelo
    • 15/12/09

    si configuras

    RSAAuthentication no
    PubkeyAuthentication yes

    el inicio de sesión es más rápido (puedes comprobarlo ejecutando ssh -v usuario@servidor)

    • Leoslay
    • 3/03/10

    chicos cuando se encuentren con ell archivo “authorized_keys” en el servidor, no lo reemplacen ni lo sobre editen, simplemente agrenguenle la clave generada en el archivo como si fuera siguiente linea. Espero explicarme.

  3. “cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys”

    Sí que es necesario realizarlo. Al menos en CentOS 5.5 lo he necesitado.

    Un saludo

  4. Gracias por el tutorial.

    El authorized_keys no lo he tenido que “toquetear” para que todo funcione.

  1. 1/07/11

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: