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".
Tabla de contenidos |
---|
Conexión usando claves RSA
...
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 atlasserver
HostName atlas-sccserver.aticadominioxx.um.es
User usrserver
Port 22
IdentityFile ~/.ssh/id_rsa_atlas
HostKeyAlgorithms ssh-rsa
...
- Aunque en el equipo local nuestro usuario es "usrclient", en el remoto puede ser cualquier otro nombre.
- La primera linea indica el nombre del bloque en la configuración. NO ES EL NOMBRE DEL SERVIDOR REMOTO. Gracias a ello, en este caso podemos hacer "ssh atlasserver" y por defecto tomará el usuario "usrserver" y el nombre de host "atlas-sccserver.aticadominioxx.um.es". La alternativa a no tener este bloque es por tanto escribir siempre "ssh usrserve@atlas-scc.aticausrserve@server.dominioxx.um.es" equivalente gracias a config a "ssh atlasserver"
- Estamos diciendo que de todas las parejas de claves RSA utilice la privada id_rsa_altas y y la pública id_rsa_atlas.pub.
- Indicamos otras cosas como el puerto y algoritmos criptográficos.
...
Usar el fichero "config" nos ayuda mucho cuando queremos acortar los comandos ssh, gestionar claves RSA diferentes según destino, opciones criptográficas, diferentes , etc..
Uso explícito
...
de un par de claves
Además del uso del fichero "$HOME/.ssh/config", existe la posibilidad de indicar en linea de comandos qué clave usaremos para un destino concreto usando el flag "-iii" :
ssh -i $HOME/.ssh/id_rsa__específica usrserver@atlas-scc.aticaalternativa usrserver@server.dominioxx.um.es
Hay muchos más flags para otras formas de conexión.
...
En primer lugar, si hay un problema de conexión debemos de realizar un intento con información de depuración. En Linux se consigue con "-vvv"
Identifica Usando -vvv en tu comando SSH obtendrás muchos mensajes por consola. Busca en esos mensajes e identifica la presencia o no de las líneas siguientes y entiende lo que significa.
Ej:
ssh -vvv server
Configuraciones por defecto
...
Si no obtienes lo siguiente, tenemos un problema de red o de cortafuegos:
debug1: Connecting to atlas-scc.aticato server.dominioxx.um.es [35.210.226.77] port 22.
debug3: set_sock_tos: set socket 3 IP_TOS 0x10
debug1: Connection established.
...
debug1: identity file /home/usrclient/.ssh/id_rsa_atlas type 0
debug1: identity file /home/usrclient/.ssh/id_rsa_atlas_alternative type -1
Un poco más abajo, aparecen lineas que indican lo que va a intentar y en qué orden
...
debug1: Will attempt key: /home/usrclient/.ssh/id_rsa_atlas_alternative RSA SHA256:1+Owg1wFhPfMpzyBZwFhPfMpzNV0Cg97wG0s explicit agent
debug1: Will attempt key: /home/usrclient/.ssh/id_rsa_atlas RSA SHA256:pwFhPfMpzzwFhPfMpzwFhPfMpzwFhPfMpzS1u11Nc0QDo9CU6v3c agent
debug1: Will attempt key: usrclient@escritorio RSA SHA256:aYwyjlt0Tz7sOr57EqHwjTz7siRsxBdZKiGik agent
debug1: Will attempt key: usrclient@escritorio RSA SHA256:joIwxJMxtG2IR/3M5pMxtG2IR/3xDvBxSBZq1Y agent
...
Identifica quién intentas ser en el equipo remoto en una linea como la siguiente:
debug1: Authenticating to atlas-scc.aticato server.dominioxx.um.es:22 as 'usrserver'
Métodos válidos de conexión
...
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
Debe estar el método que tu persigues utilizar. Más abajo, tu equipo local va ofreciendo las claves una por De estar permitido "publickey", te remito al apartado donde se ven las claves RSA que se ofrecen y el orden en el que lo hace cada una:
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/usrclient/.ssh/id_rsa_atlas_alternative RSA RSA SHA256:aYwyjlt0Tz7sOr57EqHwjTz7siRsxBdZKiGik explicit agent
Analiza lo que hace ocurre en tu caso.
Todo parece correcto, .... pero no me toma las claves
Revisa que exista el fichero $HOME/.ssh/authorized_keys con los permisos (MUY FRECUENTE) que hemos indicado arriba y como propietario el usuario con el que te conectas. El resumen:
Muy frecuentemente es un problema de permisos en las claves. Sobre todo pasa en los ficheros que copiamos de un sitio a otro o que creamos manualmente.
Revisa que tu equipo local tiene las claves con los permisos adecuadosEn el equipo local:
$ ls -la $HOME/.ssh
-rw------- 1 usrclient usrclient 3389 sep 12 2022 id_rsa
-rw-r--r-- 1 usrclient usrclient 747 sep 12 2022 id_rsa.pub
En el equipo remoto:, revisa que exista el fichero $HOME/.ssh/authorized_keys con los permisos correctos que hemos indicado arriba y como propietario el usuario con el que te conectas.
$ ls -l $HOME/.ssh
-rw------- 1 usrserver usrserver 747 jul 4 12:59 authorized_keys
...
$ ls -ld $HOME
-rw------- 1 usrserver usrserver 747 jul 4 12:59 /home/usrserver
Si no entiendes nada: elimina complejidad para depurar de nuevo
Si queremos estar seguros de que no usamos claves RSA o para un caso concreto no queremos hacerlo, usamos los flags de SSH siguientes:
...
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password atlasserver
Estaríamos cogiendo del $HOME/.ssh/config todo menos la info de RSA.
Para estar 100% seguros de que no tenemos nada mal en la config que nos perjudica, podemos comentar la sección del config local que hace referencia a la forma de conectar con el servidor en cuestión (el bloque "Host atlasserver" ... ) con "#" al inicio de la linea.
Además impedimos el uso default de claves RSA con los mismos flags .SSH:
ssh -vvv -o PubkeyAuthentication=no -o PreferredAuthentications=password usrserver@atlas-sccusrserver@server.aticadominioxx.um.es
Revisa la salida de consola a la luz de los apartados anteriores.
:if not goto begin: