Cuando ejecutemos el modo depuración SSH (modo DEBUG) veremos realmente lo que está pasando mientras nos conectamos a un servidor Open SSH.
Al utilizar el parámetro -v desde un cliente SSH, ejecutaremos SSH en modo detallado (DEBUG, o “verbose“) lo cual nos mostrara info acerca de la progresión de la conexión.
Esto es especialmente útil cuando tengamos problemas y no sepamos en qué punto de la conexión SSH podemos tener un problema; entonces con el modo depuración SSH veremos dónde está el error o los errores.
–> Ejecutamos el modo de depuración SSH de esta forma:
ssh -v usuario@maquina
–> Igualmente cuando cerremos sesión de SSH veremos mensajes de depuración avanzada en el fichero
/var/log/auth.log
–> También podemos aumentar incluso el nivel de verbosidad por ejemplo el a nivel 2 y al nivel 3 (definido en el fichero /etc/ssh/sshd_config)para de esta forma obtener todavía más mensajes de depuración:
LogLevel DEBUG2
LogLevel DEBUG3
root@RASP:/home/pi# ssh -v pi@192.168.-.-
OpenSSH_7.4p1 Raspbian-10+deb9u7, OpenSSL 1.0.2u 20 Dec 2019
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 192.168.8.194 [192.168.-.-] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /root/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4p1 Raspbian-10+deb9u7
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4p1 Raspbian-10+deb9u2
debug1: match: OpenSSH_7.4p1 Raspbian-10+deb9u2 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 192.168.-.-:22 as 'pi'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: ; compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:cHYpb5FTzjO+7KSmpiDfSj5gaaCS2NMlc1spdoCQRKw
debug1: Host '192.168.-.-' is known and matches the ECDSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /root/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Trying private key: /root/.ssh/id_ed25519
debug1: Next authentication method: password
pi@192.168.-.-'s password:
Una vuelta de tuerca sería registrar toda la info de la conexión SSH en un fichero.
ssh -v usuario@IP 2>fichero.txt
tee es una utilidad que recibe la “entrada estandar” , la escribe en un archivo, y escribe la “salida estandar”
Usaremos tee de esta forma:
ssh usuario@servidor| tee -a archivo
Nos conectamos por ssh, ejecutamos los comandos necesarios y después descubrimos el contenido del fichero de log creado por tee:
Podemos ver que se han registrado todos los comandos ejecutados en la sesión SSH.
En lugar de registrar la conexión SSH al conectarnos, también podemos habilitar el modo depuración en el servidor SSH, para así registrar más info sobre las conexiones SSH que se establezcan.
Añadimos
LogLevel DEBUG
en el fichero /etc/ssh/sshd_config del servidor SSH
Por defecto nos encontraremos Loglevel INFO
—> Lo cambiamos por LogLevel DEBUG para aumentar la depuración (la verbosidad de los datos que obtendremos).
acepta hasta DEBUG 3, según el modo de depuración que queramos. (DEBUG es igual que DEBUG1)
A continuación conoceremos algunos ficheros de Linux que contienen info interesante sobre sesiones e inicio de sesión en máquinas Unix.
Utilizaremos el comando last para leer correctamente la información los ficheros wtmp,utmp y btmp.
last es un comando de linux que investiga dentro del fichero wtmp,utmp y btmp y muestra una lista con información relativa a las sesiones.
En el caso del fichero wtmp, last muestra todos los intentos de sesión.
No podemos usar por ejemplo el comando cat, porque la salida será ilegible:
Veamos pues los siguientes ficheros:
Para ver el contenido de estos ficheros usaremos el comando last :
last
También podemos usar el comando last para ver el contenido de los anteriores ficheros : wtmp, utmp, btmp. Veamos cómo.
last /var/log/utmp
last -f /var/log/btmp
Ejecutamos la ayuda de Linux para ver la explicación de las directivas de SSH y sus posibles configuraciones:
man sshd_config