Cygwin ssh Server akzeptiert keine Verbindungen

14

Ich habe gerade mit cygwin einen SSH-Server (OpenSSH) auf einem Windows 7-Computer eingerichtet und versuche, mit PuTTY auf einem Windows Vista-Computer eine Verbindung herzustellen. Ich habe die Netzwerkaktivität auf dem Win 7-Computer mit Wireshark überprüft und festgestellt, dass ich TCP SYN an Port 22 auf dem Win 7-Computer erhalte, aber der SSH-Server scheint nicht zu antworten. Ich habe die Portnummer überprüft, für die sshd konfiguriert ist, meine Firewall-Regeln überprüft und überprüft, ob ich localhost ssh kann (was mir auch recht ist). Ich habe absolut keine Ahnung, wie Sie dieses Problem beheben können.

Surma
quelle
Sie sollten wahrscheinlich Ihre Firewall erneut überprüfen und / oder diesen Aspekt näher erläutern.
JJLIN

Antworten:

23

Möglicherweise wird die Windows-Firewall ausgeführt. Öffnen Sie: Systemsteuerung -> Windows-Firewall -> Programme oder Funktionen über die Windows-Firewall zulassen

Klicken Sie auf die Schaltfläche "Einstellungen ändern" und dann auf die Schaltfläche "Anderes Programm zulassen ...". SSHD ist wahrscheinlich nicht in der Liste, die angezeigt wird. Verwenden Sie daher die Schaltfläche "Durchsuchen ...", um die Binärdatei zu suchen, und klicken Sie auf "Öffnen" und dann auf "Hinzufügen". Meins war in C: \ cygwin \ usr \ sbin \ sshd.exe

Irgendwo dort können Sie entscheiden, welche "Netzwerkstandorttypen ..." Sie verwenden möchten. Ich habe meine mit "Privat" aktiviert und "Öffentlich" deaktiviert. Ich kann mich jetzt remote anmelden.

Frank
quelle
Nach Franks Antwort , als ich ein Datenschutz-VPN auf einem Computer in meinem Heimnetzwerk installierte, sah ich dasselbe Problem. Dies lag daran, dass der Computer mit dem VPN jetzt eine Verbindung mit dem sshd in einem öffentlichen Netzwerk herstellte. Um dies zu beheben, musste ich sshd durch die Windows-Firewall für öffentliche und private Standorte zulassen.
James Hirschorn
5

Gibt es in Ihrem sshd_config angeben Listenaddress als 0.0.0.0 oder 127.0.0.1 ?

Wenn es 0.0.0.0 ist oder nur auskommentiert wurde, können Sie eine Verbindung von außerhalb des Computers, dh von einem anderen Computer, herstellen.

Wenn es sich um 127.0.0.1 (oder eine andere 127.0.0.x- Nummer) handelt, wird NUR der LOCALHOST abgehört, und Sie können sich nur von demselben Computer aus anmelden. Externe Maschinen werden abgelehnt.

Lornix
quelle
2
Es ist auskommentiert.
Surma
1

Nachdem ich mit der Windows-Firewall nichts zu tun hatte, stellte ich schließlich fest, dass ich über die Datei /etc/hosts.allow Verbindungen zu meinem eigenen Subnetz in Cygwin selbst zulassen musste.

Diese Leitung (unter Verwendung meines Subnetzes) als erste Regel hat das Problem für mich behoben.

ALL: 192.168.0.0/24: zulassen

chriswhitmore
quelle
1
Ein Problem mit hosts.allow oder hosts.deny würde keine Verbindungsunterbrechung verursachen. Dies würde dazu führen, dass der SSH-Server die Verbindung akzeptiert und sie dann während des Authentifizierungsprozesses beendet.
Kenster
@Kenster hosts.allow und hosts.deny arbeiten auf TCP-Ebene. Sie können keine Verbindung zum SSH-Server herstellen, da Sie auf Schicht 4 blockiert werden, bevor Sie den SSH-Server erreichen.
MTAK
@mtak Nein, das stimmt nicht. hosts.allow und hosts.deny sind Konfigurationsdateien für TCP-Wrapper . Das Serverprogramm (in diesem Fall sshd) muss die TCP-Verbindung akzeptieren, die IP-Adresse des Remote-Endpunkts abrufen und dann TCP-Wrapper anrufen, um festzustellen, ob der Client zugelassen werden soll. Wenn libwrap nein sagt, bricht der Server normalerweise die Verbindung ab.
Kenster
Siehe zB sshd.c . Suchen Sie nach den LIBWRAP-ifdefs. Hier ist die hosts_access-Funktion , die sshd aufruft. Ich werde auch bemerken, dass die neueste Version von sshd.c die libwrap-Unterstützung entfernt.
Kenster
@Kenster, du hast recht. Ich versuchte es und ich erhalte den folgenden Fehler: ssh_exchange_identification: Connection closed by remote host. Guten Tag auf SU :)
MTAK
1

Für mich war das Problem mit dem falschen Besitz der /var/emptyDatei. Das Problem wurde offensichtlich, nachdem sshd mit in den Debug-Modus versetzt wurde /usr/sbin/sshd.exe -D -dd. Ich musste es korrigieren mit:

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

Benutzer und Gruppe wurden aus dem ls -la /varVerzeichnis entnommen (nur mit anderen Dateien abgeglichen). Weitere Informationen finden Sie hier: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC340

demisx
quelle
Vielen Dank für den Hinweissshd -D -dd
John Oxley
0

Stellen Sie sicher, dass Sie Windows 7 gewinnen. Antivirus blockiert Port 22 nicht. Wechseln Sie außerdem zu Ihrem Windows-Service-Panel, suchen Sie nach CYGWINsshd und aktivieren Sie es. Legen Sie die Anmeldung fest, um das Kontrollkästchen zu suchen und zu aktivieren.

Damit wird das Problem behoben: user @ mymachine ~ $ net start sshd Systemfehler 1069 ist aufgetreten.

Der Dienst wurde aufgrund eines Anmeldefehlers nicht gestartet.

D Los
quelle