it-swarm.com.de

Windows 10 Linux Subsystem SSH-Client Ressource vorübergehend nicht verfügbar

Ich versuche, in meinen Remote-Server innerhalb des Windows 10 Linux-Subsystems zu sshen. Ich verwende MS Windows 10 Home Insider Preview Build 14366.

Während ich auf die Eingabeaufforderung tippe, tippe ich:

ssh [email protected]

Einige Sekunden nach der Eingabe des Befehls ssh wird die folgende Meldung angezeigt:

ssh: Verbindung zu Host domain.com Port 22: Ressource vorübergehend nicht verfügbar

Ich kann mich sowohl mit PuTTY als auch mit ssh in Git Bash erfolgreich verbinden.

Das lässt mich glauben, dass das Problem auf meinem lokalen PC und insbesondere im Linux-Subsystem liegt. Ich bin immer noch sehr grün mit der Linux-Umgebung und weiß nicht, wie ich diese Meldung interpretieren soll. Welche Ressource ist nicht verfügbar und wie kann ich sie verfügbar machen?

17
kell

Soweit ich das beurteilen kann, ist dies ein Fehler in der WSL. Hoffentlich wird Microsoft das Problem im nächsten Build beheben. Aber fürs Erste können wir diesen leicht hässlichen Hack verwenden.

Update # 1 : Auf jeden Fall ein Fehler. Gefunden dieses Problem auf Github. Ihre vorgeschlagene Problemumgehung für den Neustart der Shell funktioniert auch für mich, wenn Sie all dies nicht durchgehen möchten.

TL; DR Fügen Sie dies zum ENDE Ihrer SSH-Konfiguration hinzu (normalerweise unter ~/.ssh/config):

Host *
    ProxyCommand nc %h %p %r

Das funktioniert folgendermaßen: Bei unserem SSH-Problem handelt es sich nicht um ein Firewall-Problem, da nc und telnet auf demselben Host und Port funktionieren (versuchen Sie es mit telnet <Host> <port> oder nc <Host> <port>: Sie sollten etwas wie SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7 sehen). Dies können wir zu unserem Vorteil nutzen.

SSH ermöglicht die Verwendung von Proxys, die Standardeingaben verwenden und diese über die Option ProxyCommand an den Port des Servers senden. Dies wird normalerweise zum Tunneln von Netzwerken zu einem geschützten Host verwendet, indem ein SSH-Server zwischen den Bastionen verwendet wird, der manchmal als Sprunghost bezeichnet wird (siehe diesen Link für Mehr Info).

Dieser Hack weist SSH an, einen Proxy ohne Jump-Hosts zu verwenden. Daher wird die fehlgeschlagene Zuweisung von TCP Ressourcen durch SSH umgangen, indem die gesamte Netzwerkressourcenzuweisung auf Netcat übertragen wird, was funktioniert. SSH macht einfach seine SSH-Sache ohne Netzwerkverbindungen, und Netcat sendet die Rohdaten über eine TCP -Verbindung an den SSH-Server.

WARNUNG: Da dies die ProxyCommand für alle Hosts ändert, weiß ich nicht, wie sie mit anderen SSH-Konfigurationshosts interagiert, die ProxyCommand verwenden. Ich habe ein paar Server, mit denen ich das testen kann, und ich werde diese Antwort mit den Ergebnissen aktualisieren. Es besteht die Möglichkeit, dass es keine schädlichen Nebenwirkungen gibt, aber das kann ich nicht garantieren.

Update Nr. 2: Ich habe einige Tests mit einigen meiner Server durchgeführt, und dies scheint zu funktionieren. SSH verwendet den obersten Eintrag in der Konfiguration, wenn mehrere Einträge zutreffen. Daher würde eine vorhandene ProxyCommand, die über diesem Hack vorhanden ist, ihn überschreiben. Wenn der neue SSH-Befehl ausgeführt wird, liest er die SSH-Konfiguration erneut. Wenn es keine andere ProxyCommand gibt, verwendet SSH unseren Hack ProxyCommand, sodass er nur auf die "äußerste" SSH-Sitzung angewendet werden kann. Warnung: Wenn Sie den Hack an den Anfang der Konfigurationsdatei setzen (oder über den Eintrag, zu dem Sie versuchen, eine SSH-Verbindung herzustellen), ignorieren SSH-Sitzungen, für die eine ProxyCommand erforderlich ist, die andere ProxyCommand und versuchen stattdessen, die Adresse des Hosts aufzulösen und verbinden Sie sich direkt mit Netcat.

7
computergeek125

Dies war auch ein Problem für mich. Es stellte sich heraus, dass meine (Symantec) Firewall den gesamten Internet-Datenverkehr von Bash blockierte.

Es scheint ein allgemeines Problem mit Firewall-Anbietern von Drittanbietern zu sein, die den Prozess nicht erkennen:

https://github.com/Microsoft/BashOnWindows/issues/809

Als ich meine Firewall deaktiviert habe, hat es einwandfrei funktioniert. Kann im Moment keine bessere Lösung finden.

3
Andrew Jones

Wenn Sie Nginx in Zukunft installieren, wird SSH standardmäßig mit der Fehlermeldung "Ressource vorübergehend nicht verfügbar" blockiert, es sei denn, Sie ...

Sudo ufw erlauben ssh

0
andrerpena

In meinem Fall habe ich diesen Fehler erhalten, weil ein Windows-Update Probleme mit meinem Hyper-V-Schalter verursacht hat. Es stellt sich heraus, dass der Host, zu dem ich versucht habe, ssh zu verwenden, mit diesem Switch verbunden war.