Configurar SSH para acceso sin contraseña

ssh

SSH, o Secure Shell, es una intérprete de comandos seguro que es utilizado para el acceso remoto desde toda clase de dispositivos a servidores, mediante un canal tunelizado y protegido mediante cifrado, lo cual le otorga una seguridad que evita, o al menos vuelve extremadamente difícil, que terceros puedan interceptar el usuario o contraseña. En el caso de *Nix tenemos disponible este protocolo mediante OpenSSH, un conjunto de soluciones cliente-servidor disponible en todas las distribuciones de Linux y en plataformas relacionadas como *BSD.

Ahora bien, si SSH nos ofrece un excelente nivel de seguridad ¿Por qué razón querríamos utilizarlo sin la necesidad de ingresar una contraseña? Razones puede haber varias, pero una que comunmente destaca como la generadora es la necesidad de ingresar en forma remota mediante scripts y realizar tareas propias del superusuario, y es que como bien sabemos no es aconsejable poner esos datos en ningún script. Para solucionar esta problemática vamos a ver cómo generar claves de SSH para poder ingresar en forma remota sin necesidad de contraseña.

Esto nos requiere generar una clave pública y una clave privada: la primera será almacenada en el servidor al cual vamos a acceder y como su nombre lo indica podemos enviarla o compartirla, y la segunda estará almacenada en el dispositivo (ordenador, smartphone, tableta) desde el cual vamos a acceder a dicho servidor, y debe ser guardada con mucho cuidado y sólo utilizada por nosotros o por personas de nuestra confianza.

Por lo mencionado en el párrafo anterior es importante comentar que este tipo de soluciones exige una responsabilidad muy grande en el cuidado de los dispositivos desde los cuales vamos a ingresar a un servidor, y es que cualquiera que tenga acceso a ellos podrá ingresar al mismo sin necesidad de conocer la contraseña, lo cual supone un riesgo de seguridad muy grande. Aclarado esto, veamos como podemos comenzar, y para ello lo primero es tener instalado el demonio SSH en el servidor:

# apt-get install openssh-server

Ahora tenemos que crear el directorio .ssh en el directorio de usuario:

# mkdir -p $HOME/.ssh

# chmod 0700 $HOME/.ssh

# touch $HOME/.ssh/authorized_keys

Editamos el archivo /etc/ssh/sshd_config y verificamos que las siguientes líneas estén tal cual:

PubkeyAuthentication yes

AuthorizedKeysFile %h/.ssh/authorized_keys

Ahora vamos al cliente y ejecutamos:

ssh-keygen -t rsa

Se nos indicará que se está creando la clave, y se nos pedirá que ingresemos el archivo en el cual estará almacenada (por defecto será en nuestro home, en una carpeta llamada /.ssh/id_rsa). Podemos pulsar Enter puesto que esa ubicación nos sirve perfectamente, y luego volvemos a pulsar Enter las dos veces en que se nos solicita ingresar una frase de seguridad puesto que, recordemos, vamos a ingresar en forma remota sin introducir ningún dato así que tampoco queremos ninguna frase.

Ahora que tenemos la clave pública debemos compartirla con aquellos equipos a los cuales vamos a conectarnos. Suponiendo que el servidor del cual hablamos tiene la dirección 192.168.1.100, lo que hay que hacer es:

ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@192.168.1.100

Luego de realizar el copiado, se nos invitará a realizar el login remoto para probar las claves, y hay que tener en cuenta que en este caso root es la cuenta con la cual vamos a acceder al servidor, por lo que si vamos a querer hacerlo con otro usuario debemos modificar root por la cuenta de usuario con la que vayamos a realizar el acceso mediante SSH.

Ahora solo nos queda reiniciar el servidor SSH para que tome la nueva configuración:

# /etc/init.d/ssh restart

A partir de ahora, si quisiéramos acceder a un segundo servidor y hacerlo también sin ingresar contraseña, simplemente debemos enviarle la clave pública, con lo cual simplemente repetimos el último paso, cambiando usuario y dirección IP según sea necesario:

ssh-copy-id -i $HOME/.ssh/id_rsa.pub admin@192.168.1.228


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   dryant dijo

    Gracias por la info pero nada… no hay forma….
    Llevo toda la mañana intentandolo y siempre me pide la contraseña.
    Hace tiempo lo intenté y lo dejé por imposible por lo mismo….
    Creo mi llave en mi Macbook, la copio en mi raspberry en ~/.ssh/authorizedKeys
    Configuro sshd.conf con public autentication y compruebo que el directorio de las llaves es el exactamente donde estan las llaves. Reinicio la raspberry y al conectar me pide de nuevo la clave
    Que puede falla?

    1.    dryant dijo

      Despues de varias horas probando muchisimas cosas, he descubierto que con mi usuario creado no funciona nunca, pero con el usuario por defecto que viene llamado «ubuntu» funciona a la primera.
      Alguna aclaracion sobre porque puede pasar esto?
      Saludos y gracias