SSH puede utilizar varios métodos de autenticación y hay archivos que controlan los permisos para estos métodos.
Es la autenticación básica. Se puede habilitar o deshabilitar en /etc/ssh/sshd_config y /etc/ssh/ssh_config.
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:
/etc/ssh/shosts.equiv: con el mismo funcionamiento que /etc/hosts.equiv
$HOME/.shosts: a nivel de usuario, como el fichero $HOME/.rhost
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.
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.
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.
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.
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]$ |