Este artículo le muestra cómo solucionar problemas de Secure Shell (SSH) en un servidor Linux®.
Diferentes tipos de errores
Si no puede conectarse mediante SSH a un servidor, debe prestar atención a los errores (o la falta de ellos) que recibe. La siguiente lista describe algunos posibles errores.
Acceso denegado o Autenticación rechazada
Este tipo de error ocurre cada vez que inicia sesión a través de SSH con credenciales incorrectas. Si recibe este error, puede verificar lo siguiente:
- Asegúrese de haber escrito correctamente el nombre de usuario y la contraseña.
- Si está utilizando un par de claves SSH, asegúrese de tener la clave privada instalada en su máquina local.
Puerto 22:Conexión rechazada
Este error ocurre por las siguientes razones:
- SSH no está instalado o en ejecución.
- SSH está escuchando en un puerto diferente.
- Las reglas del cortafuegos no permiten SSH.
Error de red:conexión agotada
Este error ocurre a menudo debido a problemas de conectividad de red en el servidor o en su máquina local. Cada vez que reciba estos errores, asegúrese de que su computadora local esté conectada a Internet. Si está conectado, compruebe también la conexión del servidor para asegurarse de que el servidor se está ejecutando.
Verificar desde el exterior
Estas son algunas formas comunes de solucionar problemas de SSH desde fuera de su servidor:
nmap
nmap
es una herramienta de exploración de red y escáner de seguridad o puerto. Puede usar esta herramienta para verificar si el puerto para SSH está abierto en el servidor. El siguiente ejemplo proporciona el comando y su salida:
$ nmap <ip-address-of-host>
Starting Nmap 6.40 ( https://nmap.org ) at 2020-03-21 23:44 UTC
Nmap scan report for <ip-address-of-host>
Host is up (0.033s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 4.35 seconds
ssh -vvv
Usando ssh
con el -vvv
flags produce una salida detallada a medida que accede al servidor mediante SSH. Este comando puede proporcionar información útil para solucionar problemas exactamente donde podría estar el problema.
Comprobar desde el interior
Si tiene problemas con SSH, puede iniciar sesión utilizando la consola de emergencia para solucionar los problemas del servidor y verificar las siguientes condiciones:
Proceso SSH
Primero, asegúrese de que el proceso SSH se esté ejecutando ejecutando el siguiente comando:
- Para Ubuntu® 16.04+, Debian® 8+ y Centos® 7+:
systemctl status sshd
- Para Centos 6:
service sshd status
Si no ve el servicio ejecutándose, puede iniciar el proceso usando el siguiente comando:
- Para Ubuntu 16.04+, Debian 8+ y Centos 7+:
systemctl start sshd
- Para Centos 6:
service sshd start
netstat
El netstat
El comando le muestra las conexiones actuales en el servidor. Este comando es una buena manera de verificar y ver en qué puerto se está ejecutando SSH. Cuando ejecuta netstat
, usa las banderas -plnt
para obtener el siguiente resultado:
# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::22 :::* LISTEN 13631/sshd
Archivo de configuración SSH
El archivo de configuración de SSH, /etc/ssh/sshd_config , establece la configuración de SSH. Hay muchas opciones en el archivo de configuración, pero aquí hay algunas que debe tener en cuenta:
Port 22 <---- The port ssh runs on
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
~
~
~
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes <---- Allows or block users logging in as root
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes <---- Will state whether or not a user needs an ssh key to log in
Alternativamente, puede usar grep
comando para buscar estas líneas específicas. Cuando usas el grep
comando, debe ser específico al buscar una frase específica. Tenga cuidado con la puntuación, las mayúsculas y la ortografía.
$ sudo grep Port /etc/ssh/sshd_config
# Port 22
El cortafuegos
Si tiene conectividad de red, todas las configuraciones son correctas y aún no puede conectarse a través de SSH, es posible que desee ver las reglas de su firewall en el servidor. En servidores Linux, iptables tiene estas reglas. Para listar las reglas de firewall en iptables , ejecute el comando iptables -L
. Para obtener más información sobre iptables , lea Introducción a iptables.
fail2ban
fail2ban
es una aplicación que bloquea una dirección IP después de un cierto número de intentos fallidos de inicio de sesión. Para verificar las cárceles, puede ejecutar el comando fail2ban-client status
. Este comando le muestra todas las cárceles configuradas en el servidor y las direcciones IP que están en esas cárceles.
Los archivos de registro
Cuando todo lo demás falla, vaya a los archivos de registro. Estos archivos proporcionan información sobre si está llegando o no al servidor, si está utilizando una contraseña no válida, etc. Los archivos de registro que debe revisar incluyen los siguientes archivos:
- Ubuntu o Debian:/var/log/auth.log
- CentOS o RHEL®:/var/log/secure
Al buscar en estos archivos de registro, puede utilizar less
Comando para analizar todo el archivo y buscar una hora o cadena específica. Si ha iniciado sesión en el servidor desde la consola, puede usar tail -f
en los registros mientras intenta SSH en el servidor. Luego, puede ver la actualización de los archivos de registro en tiempo real.