El servidor ssh de Cygwin no acepta conexiones

14

Acabo de configurar un servidor SSH (OpenSSH) en una máquina con Windows 7 usando cygwin y estoy tratando de conectarme a él usando PuTTY en una máquina con Windows Vista, pero sigo sin conexión. Verifiqué la actividad de red en la máquina Win 7 con Wireshark y descubrí que estoy recibiendo TCP SYN en el puerto 22 en la máquina Win 7, pero el servidor ssh no parece responder. Verifiqué el número de puerto que sshd está configurado para usar, verifiqué las reglas de mi firewall y verifiqué que puedo ssh localhost (lo cual puedo hacer bien). No tengo ni idea de cómo solucionar este problema.

Surma
fuente
Probablemente deberías revisar tu firewall nuevamente, y / o dar más detalles sobre este aspecto.
jjlin

Respuestas:

23

Es posible que tenga Windows Firewall ejecutándose. Abrir: Panel de control -> Firewall de Windows -> Permitir un programa o función a través del Firewall de Windows

Haga clic en el botón "Cambiar configuración" y luego en el botón "Permitir otro programa ...". SSHD probablemente no está en la lista que aparece, así que use el botón "Examinar ..." para encontrar el binario y haga clic en "Abrir" y luego "Agregar". La mía estaba en C: \ cygwin \ usr \ sbin \ sshd.exe

En algún lugar allí puede decidir qué "Tipos de ubicación de red ..." desea utilizar. Dejé el mío con Private marcado y público sin marcar. Ahora puedo iniciar sesión de forma remota.

Franco
fuente
Además de la respuesta de Frank , cuando instalé una VPN de privacidad en una computadora en mi red doméstica, vi este mismo problema. Fue porque con la VPN la computadora ahora se estaba conectando con el sshd en una red pública. Para solucionar esto, tuve que permitir sshd a través del Firewall de Windows para ubicaciones públicas y privadas.
James Hirschorn
5

¿Su sshd_config especifica ListenAddress como 0.0.0.0 o 127.0.0.1 ?

Si es 0.0.0.0 o simplemente ha comentado, puede conectarse desde fuera de la máquina, es decir, desde otra computadora.

Si es 127.0.0.1 (o cualquier otro número 127.0.0.x ), entonces SOLO está escuchando en LOCALHOST, y solo puede iniciar sesión desde la MISMA máquina. Las máquinas externas son denegadas.

lornix
fuente
2
Está comentado.
Surma
1

Después de jugar con el firewall de Windows sin ningún efecto, eventualmente descubrí que tenía que permitir conexiones a mi propia subred en Cygwin a través del archivo /etc/hosts.allow.

Esta línea (usando mi subred) como la primera regla solucionó el problema para mí.

TODOS: 192.168.0.0/24: permitir

chriswhitmore
fuente
1
Un problema con hosts.allow o hosts.deny no causaría un tiempo de espera de conexión. Causaría que el servidor SSH acepte la conexión y luego la desconecte durante el proceso de autenticación.
Kenster
@Kenster hosts.allow y hosts.deny funcionan a nivel TCP. No podrá conectarse al servidor SSH porque se bloquea en la capa 4, incluso antes de llegar al servidor SSH.
mtak
@mtak No, eso no es cierto. hosts.allow y hosts.deny son archivos de configuración para TCP Wrappers . El programa del servidor (sshd en este caso) tiene que aceptar la conexión TCP, obtener la dirección IP del punto final remoto y luego llamar a los contenedores TCP para ver si se debe permitir al cliente. Si libwrap dice que no, entonces el servidor generalmente desconecta la conexión.
Kenster
Véase, por ejemplo sshd.c . Busque los ifdefs LIBWRAP. Aquí está la función hosts_access que sshd está llamando. También notaré que la versión más reciente de sshd.c elimina el soporte de libwrap.
Kenster
@Kenster, mi mal, tienes razón. Lo probé y me sale el siguiente error: ssh_exchange_identification: Connection closed by remote host. Buen día en SU ​​:)
mtak
1

Para mí, el problema era con la propiedad incorrecta del /var/emptyarchivo. El problema se hizo evidente después de poner sshd en modo de depuración con /usr/sbin/sshd.exe -D -dd. Tuve que corregirlo con:

chown [user]:[group] /var/empty

El usuario y el grupo fueron tomados del ls -la /vardirectorio (solo coincidieron con otros archivos). Ver más información aquí: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC340

demisx
fuente
Gracias por señalarsshd -D -dd
John Oxley
0

Asegúrese de ganar 7 Antivirus no está bloqueando el puerto 22. Además, vaya al panel de servicio de Windows y busque CYGWINsshd y actívelo. establecer inicio de sesión para ubicar y marcar la casilla.

Eso solucionará el problema: usuario @ mymachine ~ $ net start sshd Error de sistema 1069.

El servicio no se inició debido a un error de inicio de sesión.

D Go
fuente