Estoy un poco cansado de meter las contraseñas por ssh cada vez que tengo que entrar a una máquina, así que toca crear claves ssh para poder entrar sin contraseñas y configurar el fichero ~/.ssh/config
para que sepa que clave usar en cada servidor. Y además, son un poco más seguras, siempre y cuando desactivemos el inicio con contraseña.
Creación de clave ssh
Lo primero que haremos sera crear la clave con la orden ssh-keygen
, nos pedirá donde la queremos guardar, por defecto se guarda en /home/$USER/.ssh/
con el nombre id_rsa
, pero le podemos poner en nombre que queramos.
En caso de que el servidor sea accesible desde internet, siempre es mejor ponerle una contraseña a la clave.
Añadir clave ssh al servidor
Una vez tengamos las claves las tendremos que instalar en el servidor remoto, existen varias formas, pero la mas fácil es usar la orden ssh-copy-id usuario@servidor
tal y como se ve en la imagen de debajo,
Veréis que en la primera línea se nos indica la clave que instalara en el servidor remoto, esto solo es importante en caso de que tengamos mas de una clave, como veremos mas adelante.
Una vez instalada, podemos comprobar que podemos entrar sin que nos pida la contraseña.
Tener múltiples claves para diferentes servidores
Como quiero tener dos claves, una sin contraseña para los servidores locales y otra con para los accesibles desde internet, tendremos que crear y configurar una segunda clave.
Creación de una segunda clave
Para crear una segunda clave volveremos a usar la orden ssh-keygen
pero esta vez le pondremos otro nombre, seguramente tendréis que poner la ruta absoluta o no creará la clave,
Añadir la segunda clave a un servidor remoto
Si intentamos instalar la segunda clave creada en el servidor usando el ssh-copy-id -n
sin ninguna opción veremos(ver captura) que nos indicara que clave quiere instalar, el -n
es para que nos indique que hará sin hacerlo, lo conocido como un dry run
en este caso veremos que esta intentando instalar la clave id_rsa.pub
,
Cuando tenemos varias claves podemos decir que clave queremos instalar con el -i
y la ruta de la clave a instalar, como se puede ver en la captura si le damos la ruta del qi4k5w.xyz.pub
veremos que la intenta instalar,
Una vez hayamos comprobado que va a instalar la clave que queremos usar podremos quitar el -n
y nos la instalaría.
Configuración del fichero ~/.ssh/config
Ahora el punto y final, cuando ssh
tiene varias claves para elegir, no siempre coge la correcta, teóricamente va probando diferentes opciones hasta que puede entrar, sea por password o por clave, así que ahora configuraremos el fichero ~/.ssh/config
que sirve para indicarle que clave usar donde, aunque tiene mas opciones.
Cuando hacia las pruebas me pasaba que me pedía la contraseña porque aún estaba activada, y no quería deshabilitar el acceso hasta estar seguro,
Sí le indicaba la clave sí que me pedía la contraseña de la clave y no del servidor
El fichero config
va en ~/.ssh
donde tenemos las claves,
En mi caso el fichero puede funcionar con solo dos lineas, Host
que es donde le indicamos la IP/dominio e IdentityFile
que es la ruta de la clave que queremos usar para la IP/dominio que le hemos dicho en la linea anterior,
Este fichero tiene muchas más opciones, os recomiendo mirar la configuración del mismo,
Por ejemplo(y robándoselo a Red Hat) si queremos que esta clave sea para entrar a un grupo de servidores bajo el mismo dominio sin tener que indicar el usuario y con clave, podemos usar la siguiente configuración,
Host *fedoraproject.org *fedorapeople.org *pagure.io
User lookitup
IdentityFile ~/.ssh/id_IKnowWhichKey
IdentitiesOnly yes
Tenéis más información en el fichero ‘/etc/ssh/ssh_config’ y en la documentación de Red Hat.