SSH es una familia de clientes de consola que usa SSL para securizar la conexión. Es el sustituto natural de "telnet". Existen numerosas implementaciones con o sin interfaz gráfica. En todos los sistemas operativos existe un cliente de linea de comandos que se invoca con el comando "ssh".
Conexión usando claves RSA
Habitualmente cuando obtenemos acceso a un servidor remoto, el administrador nos proporcionará un usuario y una contraseña. Eso será suficiente para acceder. Si tenemos problemas, podemos depurar la conexión según se recomienda al final de este documento.
Por el engorro de las contraseñas, el paso normal de los usuarios es a querer usar claves RSA para conectar por SSH. Si las protegemos por una password local (esa clave nunca sale de nuestro sistema) nos acercamos a un buen nivel de seguridad en la gestión de secretos. Por ello, vamos directamente a explicar como se usan claves RSA en canales SSH.
Recuerda que las claves RSA siempre son una pareja que se complementa. Por ejemplo: id_rsa (clave privada) e id_rsa.pub (clave pública).
$ ls -la $HOME/.ssh
-rw------- 1 uadmin uadmin 3389 sep 12 2022 id_rsa
-rw-r--r-- 1 uadmin uadmin 747 sep 12 2022 id_rsa.pub
Mantendremos siempre bajo custodia la clave privada que no debe de caer en otras manos. En el apartado siguiente se recomienda proteger dicha clave privada con un password. Sin embargo, la clave pública puede ser mostrada o enviada a donde sea necesario.
Como se ve los permisos de estos 600 y 644 respectivamente.
Creación del par claves (local)
Puedes crear tantas claves RSA como quieras. La fórmula es la siguiente:
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/uadmin/.ssh/id_rsa):
En este punto podemos optar por poner otro nombre al fichero de claves para reconocerlo. Reusar el nombre de un par de claves anterior es sobreescribir esas claves (OJO!).
Es importante dejar las claves en esa ubicación ($HOME/.ssh) por los automatismos del cliente SSH.
Recomendación: si no vas a automatizar procesos con SSH, se recomienda poner un password para proteger el uso de la clave privada. Te ofrece esa posibilidad cuando ejecutas el comando anterior. En una sesión de escritorio se usará el llavero de linux/wibndws/mac y no es engorroso, pero si seguro.
Autorizar la clave pública (remoto)
En nuestro equipo local tenemos en este momento los ficheros id_rsa e id_rsa.pub (o con los nombres escogidos). Son respectivamente la clave privada y la clave pública. Debemos de copiar el contenido de la clave pública en un fichero localizado en $HOME/.ssh del servidor al que nos queremos conectar usando las claves.
-rw------- 1 uadmin uadmin 747 jul 4 12:59 authorized_keys
Evidentemente, primero hay que conectar con contraseña y hacer la operación, o pedir la administrador que lo haga por nosotros. Observa que los permisos de este fichero son los adecuados. 600 funcionan y son seguros.
Típicamente tiene un contenido como el siguiente:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQClTXF+8pLR+a9M3coKxKeDTYc1Ge9I.........Qwf8pKLo77br3LPQ== userXX@escritorioXX
ssh-rsa AAAAB3NzaC1+a9M3coKxKeDTYc1Ge+a9M3coKxKeDTYc1Ge+8pLR9I.........7br3KLo77br3LPQ== userYY@escritorioYY
Cada línea es una clave pública aceptada por el usuario al que pertenece el HOME. Aceptada significa que aquel que venga con esa clave pública tiene el acceso garantizado sin saber la contraseña.
Configurar preferencias en local
Por defecto, el cliente SSH buscará el fichero $HOME/.ssh/config en el equipo local desde el que se inicia la conexión para ver qué preferencias tenemos con respecto a la conexión que estamos intentando.
Este fichero es de texto y contiene bloques como el siguiente separados por lineas en blanco.
Host atlas
HostName atlas-scc.atica.um.es
User jhidalgo
Port 22
IdentityFile ~/.ssh/id_rsa_atlas
HostKeyAlgorithms ssh-rsa
Comentarios:
- La primera linea indica el alias de la config. Gracias a ello, en este caso podemos hacer "ssh atlas" y por defecto tomará el usuario "jhidalgo" y el nombre de host "atlas-scc.atica.um.es". La alternativa a no tener este bloque es por tanto escribir siempre "ssh jhidalgo@atlas-scc.atica.um.es" equivalente gracias a config a "ssh atlas"
- Estamos diciendo que de todas las parejas de claves RSA utilice la privada id_rsa_altas y la pública id_rsa_atlas.pub.
- Indicamos otras cosas como el puerto y algoritmos criptográficos.
Uso explícito en de un par de claves
Depurar problemas
Problemas conocidos
Permisos incorrectos