Métodos de autenticación

SSH puede utilizar varios métodos de autenticación y hay archivos que controlan los permisos para estos métodos.

Autenticación mediante usuario/contraseña

Es la autenticación básica. Se puede habilitar o deshabilitar en /etc/ssh/sshd_config y /etc/ssh/ssh_config.

Autenticación basada en host/usuario

Como en los comandos "r" se puede configurar el acceso a ssh mediante ficheros que especifican desde que usuario y máquina se permite.

Estos ficheros son:

Autenticación mediante claves

Para obtener el máximo partido a SSH podemos utilizar su capacidad de autenticación mediante clave pública y privada.

Para ello el cliente debe generar sus claves privada y pública, compartiendo esta última con el servidor para poder identificarse. Una vez hecho esto las conexiones se podrán establecer sin necesidad de utilizar el esquema clásico de usuario y contraseña.

Nota

Un mensaje encriptado con la pública sólo puede desencriptarse con la correspondiente clave privada. OpenSSH utiliza estas propiedades de los algoritmos de clave pública y privada para realizar la autenticación sin intercambio de contraseñas.

Estos son los pasos a seguir para poder utilizar esta autenticación.

  1. Generar la clave en el cliente.

    
[usuario1@localhost usuario1]$ ssh-keygen -t dsa
    Generating public/private dsa key pair.
    Enter file in which to save the key (/home/usuario1/.ssh/id_dsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/usuario1/.ssh/id_dsa.
    Your public key has been saved in /home/usuario1/.ssh/id_dsa.pub.
    The key fingerprint is:
    1c:bb:8c:da:c5:a4:db:9f:bb:4d:64:86:a8:29:85:05 usuario1@localhost.localdomain
    [usuario1@localhost usuario1]$
            

    La passphrase si se rellena tiene un comportamiento similar a la contraseña, será solicitada al utilizar esta clave. Deberá ser una frase, en la que se pueden incluir espacios en blanco y signos de puntuación.

    En nuestro caso hemos decidido dejarla vacía para así poder utilizar este método de autenticación en procesos no interactivos. Puedes utilizar una frase de paso si no confías en la seguridad de tu máquina.

    Nota

    La passphrase se puede cambiar con el comando ssh-keygen -p.

    El tipo de la clave se especifica mediante el parámetro -t, y puede ser:

    • rsa1 para ssh v1

    • rsa, dsa para ssh v2

    En el ejemplo se ha utilizado el tipo dsa, y se ha guardado en los archivos por defecto. Estos son $HOME/.ssh/id_dsa para la clave privada y $HOME/.ssh/id_dsa.pub para la clave pública.

    La clave privada es la que nos identifica, por lo que debe ser accesible únicamente por el usuario propietario.

  2. Compartir la clave pública

    La clave pública debe ser incluida en el fichero $HOME/.ssh/authorized_keys2 de cada máquina en la que deseemos utilizar la autenticación por clave pública.

    Para realizar este intercambio podemos utilizar directamente el ssh desde la máquina en que hemos generado nuestra clave.

    
[usuario1@localhost usuario1]$ ssh usuario@servidor.dominio.es \
           'cat >> .ssh/authorized_keys2' < .ssh/id_dsa.pub
              

Ahora ya podemos utilizar los comandos de ssh sin utilizar el usuario y contraseña, confiando únicamente en las claves publica y privada.

En el caso de utilizar una passphrase no vacia se solicitaría al realizar la autenticación:


[usuario1@localhost usuario1]$ ssh usuario1@servidor.dominio.es
Enter passphrase for key '/home/usuario1/.ssh/id_dsa':
[usuario1@servidor usuario1]$