Estoy intentando configurar un servidor SSH en mi máquina local usando OpenSSH. Cuando trato de SSH desde un host remoto a mi servidor SSH local, el servidor SSH no responde y la solicitud agota el tiempo de espera. Estoy bastante seguro de que hay una solución realmente obvia para esto que simplemente estoy pasando por alto.
Esto es lo que sucede cuando intento ingresar a SSH desde un host remoto:
yoshimi@robots:/$ ssh -vv [email protected]
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 99.3.26.94 [99.3.26.94] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: connect to address 99.3.26.94 port 22: Connection timed out
ssh: connect to host 99.3.26.94 port 22: Connection timed out
¿Dónde robots
está mi host remoto y 99.3.26.94
mi servidor SSH local?
SSH se está ejecutando
volt@arnold:~$ ps -A | grep sshd
5784 ? 00:00:00 sshd
¿Dónde arnold
está mi servidor SSH local?
El reenvío de puertos está configurado en el enrutador
Tengo mi enrutador casero configurado para reenviar los puertos 80 y 22 a mi servidor SSH. Curiosamente, el puerto 80 funcionó sin problemas: va directamente al directorio web de Apache. Puerto 22, no tanto.
NMap dice que está filtrado
yoshimi@robots:/$ nmap -p 22 99.3.26.94
Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 14:45 EDT
Nmap scan report for 99-3-26-94.lightspeed.bcvloh.sbcglobal.net (99.3.26.94)
Host is up (0.33s latency).
PORT STATE SERVICE
22/tcp filtered ssh
Nmap done: 1 IP address (1 host up) scanned in 7.59 seconds
¿Dónde robots
está mi host remoto y 99.3.26.94
mi servidor SSH local?
No son IPTables (creo)
volt@arnold:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
... Y no tengo ningún otro cortafuegos en su lugar: es un netinst de Debian relativamente nuevo.
Entonces, entonces: ¿Qué más podría ser? Ciertamente parece ser un tipo de cortafuegos simplemente ignorar el tráfico, pero si no es el enrutador, no es iptables, y no es otro cortafuegos en el servidor SSH ... ¿qué demonios hay?
EDITAR: solicitud de conexión de error de red interna
yoshimi@robots:/$ ssh [email protected]
ssh: connect to host 192.168.1.90 port 22: No route to host
arping remotehost
debe responder solo una dirección hw, luego verifique si hwaddress es el mismo. Luego verifique la resolución condig remotehost
ydig -x remoteip
, luego verifique si el host remoto no apunta a 127.0.0.1, para esto verifique / etc / hosts of remote. Y finalmente intente deshabilitar el firewall y verifique si el proceso ssh se está ejecutando.tail -f
cualquier archivo de registro al que haya señalado sshd para la salida. Si no hay absolutamente nada en los registros, es más probable que sea un problema entre los dos dispositivos, no en el servidor ssh.Respuestas:
Una auto respuesta muy decepcionante
Después de dejar a un lado este problema por un día y volver a resolverlo, me sentí aliviado y perturbado (más perturbado que aliviado) al descubrir que todo estaba, misteriosamente, funcionando correctamente.
Entonces, ¿cuál fue el problema?
No se cambiaron ni se ajustaron configuraciones, ni en el enrutador, ni en el servidor SSH, ni en la máquina del cliente SSH. Es bastante seguro decir que fue el enrutador el que no manejó el tráfico entrante correctamente, a pesar de la configuración adecuada. Dado que el software de enrutador doméstico de mala calidad no es realmente diseñado para lidiar con el reenvío de puertos, al pobre le tomó un tiempo implementar los cambios necesarios.
¡Pero han pasado como 6 horas!
Sí amigo, lo sé. Pasé todo el día tratando de descubrir qué estaba mal, y nunca lo encontré porque no había nada malo. Evidentemente, puede tomar 6 horas, posiblemente más, para que la configuración del enrutador surta efecto.
Entonces, ¿cómo sé si este es mi problema?
Una herramienta ingeniosa que encontré durante esta aventura es
tcpdump
. Este pequeño y esbelto olfatea tráfico para ti, ofreciéndote información valiosa sobre lo que realmente está sucediendo. Además, tiene algunas características de superfiltrado que le permiten reducir exactamente lo que desea ver / para. Por ejemplo, el comando:Dice
tcpdump
que mirar para el tráfico a través de la interfaz wlan1 (-i
'Interfaz' =), sólo a través del puerto 22, ignorar la resolución de DNS nombre (-n
= 'sin resolución de nombres'), y que queremos ver tanto el tráfico entrante y saliente (-Q
aceptain
,out
oinout
;inout
es el predeterminado).Al ejecutar este comando en su servidor SSH mientras intenta conectarse a través de una máquina remota, rápidamente queda claro dónde radica precisamente el problema. Hay, esencialmente, 3 posibilidades:
SYN
el enrutador ignora y descarta los paquetes de la máquina remota antes de que lleguen al servidor.Y una vez que haya descubierto dónde radica el problema, una solución es (generalmente) trivial.
fuente
Estoy ejecutando Mint (Ubuntu).
Había hecho todo ... clave pública en formato correcto en claves autorizadas, chmodding, chowning, reinicio de ssh y sshd, etc. Como se ha documentado en todo el lugar.
Para mí, fue el firewall ufw. La falta de una respuesta ssh me señaló esto, pero no pude hacer ping en ambas direcciones en una LAN.
Probé por:
... y funcionó perfectamente, es decir, recibí una respuesta de una llamada ssh.
Entonces, comience de nuevo:
... y agrega la regla:
Todo funciona bien ahora.
fuente
ufw
) resolvió mi problema en Ubuntu 16.04. Había seguido las instrucciones de instalación de Jenkins a ciegas y habilitadoufw
en el proceso. Después de deshabilitarlo, sshd está funcionando nuevamente.Si, como yo, ha habilitado UFW (en Linux, Ubuntu en mi caso), intente esto:
Esto permitirá OpenSSH en el firewall.
fuente
Solo para otros:
Tuve que usar la opción -P en tcpdump en lugar de -Q
fuente
La mayoría de las veces el firewall es un culpable. Hacer
service iptables stop
yservice ip6tables stop
.Si detener el servicio no funciona, entonces haga iptable flush.
Si es una máquina virtual, haga lo mismo en el host también
fuente