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 mich an der Eingabeaufforderung befinde, gebe ich Folgendes ein:
Einige Sekunden nach der Eingabe des Befehls ssh wird die folgende Meldung angezeigt:
ssh: Verbindung zum Host domain.com Port 22: Ressource vorübergehend nicht verfügbar
Ich kann mich erfolgreich sowohl mit Putty als auch mit ssh in Git Bash 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?
quelle
git
andapt-get
Antworten:
Soweit ich das beurteilen kann, ist dies ein Fehler in der WSL. Hoffentlich wird Microsoft das Problem im nächsten Build beheben. Aber jetzt können wir diesen etwas hässlichen Hack verwenden.
Update Nr. 1 : Auf jeden Fall ein Fehler. Fand 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
):Hier ist, warum es funktioniert: Unser SSH-Problem ist kein Firewall-Problem, da
nc
undtelnet
auf demselben Host und Port (versuchen Sietelnet <host> <port>
odernc <host> <port>
: Sie sollten so etwas sehenSSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7
). Dies können wir zu unserem Vorteil nutzen.SSH ermöglicht die Verwendung von Proxys, die Standardeingaben verwenden und diese über die
ProxyCommand
Option an den Port des Servers senden . Dies wird normalerweise zum Tunneln von Netzwerken zu einem geschützten Host mithilfe eines SSH-Servers zwischen den Bastionen verwendet, der auch als Sprunghost bezeichnet wird ( weitere Informationen finden Sie unter diesem Link ).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 Zuweisung von Netzwerkressourcen auf Netcat übertragen wird, was funktioniert. SSH erledigt sein SSH-Ding nur ohne Netzwerkverbindungen, und Netcat sendet die Rohdaten über eine TCP-Verbindung an den SSH-Server.
WARNUNG: Da dies dasProxyCommand
für alle Hosts ändert , weiß ich nicht, wie es mit anderen SSH-Konfigurationshosts interagiert, die es verwendenProxyCommand
. 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. Ein existierendes
ProxyCommand
Geschenk über diesem Hack würde ihn also überschreiben. Wenn der neue SSH-Befehl ausgeführt wird, liest er die SSH-Konfiguration erneut, und wenn es keine andere gibtProxyCommand
, verwendet SSH unseren HackProxyCommand
, sodass er nur auf die "äußerste" SSH-Sitzung angewendet werden kann. Warnung: Wenn Sie den Hack am Anfang der Konfigurationsdatei platzieren (oder über dem Eintrag, zu dem Sie versuchen, eine SSH-Verbindung herzustellen),ProxyCommand
ignorieren SSH-Sitzungen, für die ein erforderlich ist, den anderenProxyCommand
und versuchen stattdessen, die Adresse des Hosts aufzulösen und eine Verbindung herzustellen direkt mit Netcat.quelle
vi ~/.ssh/config
, eine leere Datei zu öffnen. Ich habe deine Befehle eingefügt, aber wenn ich versuche zu speichern (esc ->: -> wq), wird mir gesagt"~/.ssh/config" E212: Cannot open file for writing
ls -al ~/.ssh
?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.
quelle
In meinem Fall ist dieser Fehler aufgetreten, weil ein Windows-Update Probleme mit meinem Hyper-V-Switch verursacht hat . Es stellt sich heraus, dass der Host, mit dem ich versucht habe, ssh zu nutzen, mit diesem Switch verbunden war - und dass ssh wiederhergestellt wurde.
quelle
Wenn Sie Nginx in Zukunft installieren, wird SSH standardmäßig mit der Fehlermeldung "Ressource vorübergehend nicht verfügbar" blockiert, es sei denn, Sie ...
quelle