Windows 10 Linux Subsystem SSH client Resource temporairement indisponible

27

J'essaie de ssh dans mon serveur distant dans le sous-système Windows 10 Linux. J'utilise MS Windows 10 Home Insider Preview build 14366.

À l'invite de commande, je tape:

ssh [email protected]

Quelques secondes après avoir tapé la commande ssh, je reçois le message suivant:

ssh: se connecter à l'hôte domain.com port 22: ressource temporairement indisponible

J'ai réussi à me connecter en utilisant Putty ainsi qu'en utilisant ssh dans Git Bash.

Donc, cela m'amène à croire que le problème est sur mon PC local et plus spécifiquement dans le sous-système Linux. Je suis toujours très vert avec l'environnement Linux et je ne sais pas comment interpréter ce message. Quelle ressource n'est pas disponible et que dois-je faire pour la rendre disponible?

kell
la source
Première supposition: le pare-feu Windows? ps> et bienvenue sur superutilisateur :) Google semble un peu lié à la place avec fork. Veuillez modifier le message et ajouter la ligne de commande qui vous donne cette erreur.
Hastur
connexes
Ramhound
je vérifie simplement que vous utilisez une version Insider Preview de Windows 10 car AFAIK, le sous-système Linux, n'est disponible que dans cette version, pas sur Windows «normal» 10. Sinon, vous utilisez peut-être Cygwin?
gogoud
@ggoud - J'ai mis à jour la question pour inclure le système d'exploitation. Il s'agit bien de la version Insider Preview.
kell
2
J'ai aussi ce problème. Il affecte tous les programmes pris en charge par ssh tels que gitandapt-get
scicalculator

Réponses:

11

Pour autant que je sache, il s'agit d'un bogue dans WSL. Espérons que Microsoft le corrigera dans la prochaine version. Mais pour l'instant, nous pouvons utiliser ce hack légèrement moche.

Mise à jour # 1 : définitivement un bug. Trouvé ce problème sur Github. Leur solution de contournement proposée pour relancer le shell fonctionne aussi pour moi si vous ne voulez pas passer par tout cela.

TL; DR Ajoutez ceci pour END votre configuration SSH (généralement situé à ~/.ssh/config):

Host *
    ProxyCommand nc %h %p %r

Voici pourquoi cela fonctionne: Notre problème SSH n'est pas un problème de pare-feu car ncet telnetfonctionne sur le même hôte et le même port (essayez telnet <host> <port>ou nc <host> <port>: vous devriez voir quelque chose comme SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7). Nous pouvons l'utiliser à notre avantage.

SSH permet l'utilisation de proxys qui prennent une entrée standard et l'envoient au port du serveur via l' ProxyCommandoption. Ceci est normalement utilisé pour créer des tunnels dans les réseaux vers un hôte protégé en utilisant un serveur SSH bastion intermédiaire, parfois appelé hôte de saut (voir ce lien pour plus d'informations).

Ce hack indique à SSH d'utiliser un proxy sans hôte (s) de saut. Ainsi, il contourne l'échec de l'allocation des ressources TCP par SSH en poussant toute l'allocation des ressources réseau sur Netcat, ce qui fonctionne. SSH fait juste son truc SSH sans aucune connexion réseau, et Netcat envoie les données brutes via une connexion TCP au serveur SSH.

AVERTISSEMENT: comme cela modifie le ProxyCommandpour tous les hôtes, je ne sais pas comment il interagit avec les autres hôtes de configuration SSH qui utilisent ProxyCommand. J'ai quelques serveurs avec lesquels je peux tester cela, et je mettrai à jour cette réponse avec les résultats. Il est possible qu'il n'y ait aucun effet secondaire préjudiciable, mais je ne peux pas le garantir.

Mise à jour # 2: j'ai fait quelques tests avec quelques-uns de mes serveurs, et cela semble fonctionner. SSH utilise l'entrée la plus élevée dans la configuration lorsque plusieurs entrées s'appliquent. Ainsi, un ProxyCommandprésent existant au-dessus de ce hack l'emporterait. Lorsque la nouvelle commande SSH est exécutée, elle relit la configuration SSH, et s'il n'y en a pas d'autre ProxyCommand, SSH utilise notre hack ProxyCommand, lui permettant de ne s'appliquer qu'à la session SSH "la plus externe". Mot d'avertissement: si vous placez le hack en haut du fichier de configuration (ou au-dessus de l'entrée vers laquelle vous essayez de SSH), les sessions SSH qui nécessitent un ProxyCommandignoreront l'autre ProxyCommandet tenteront plutôt de résoudre l'adresse de l'hôte et de se connecter directement avec Netcat.

computergeek125
la source
Merci pour le détail @ computergeek125. Malheureusement, même après avoir configuré la configuration comme suggéré, je reçois toujours le même message ssh: se connecter à l'hôte domain.com port 22: ressource temporairement indisponible Lorsque j'exécute nc -v <hôte> <port>, pour une sortie détaillée, j'obtiens la même erreur: ressource temporairement indisponible. Je fais peut-être quelque chose de mal, je n'en suis pas sûr. Étant donné que je n'ai aucun problème avec ssh en utilisant le shell bash Git, je m'en tiendrai pour l'instant. BTW, mon système est maintenant au build 14393, donc, si c'était un bug dans la version au moment de la question, c'est toujours un bug 27 builds plus tard.
kell
Eh bien, c'est intéressant. Je vais devoir faire des recherches sur cette construction. J'utilisais 14903 à l'époque (j'en ai maintenant 14905). C'est peut-être quelque chose qu'ils ont corrigé dans la version que j'ai.
computergeek125
Comment modifier la configuration SSH? Dans la console bash pour Windows, j'ai essayé d' vi ~/.ssh/configouvrir un fichier vide. J'ai collé vos commandes mais quand j'essaye de sauvegarder (esc ->: -> wq) ça me dit"~/.ssh/config" E212: Cannot open file for writing
Dan
Ok c'est bizarre. Quelle version de Windows utilisez-vous et quelle est la sortie de ls -al ~/.ssh?
computergeek125
3

C'était aussi un problème pour moi, il s'est avéré que c'était mon pare-feu (Symantec) bloquant tout le trafic Internet de bash.

Il semble que ce soit un problème général avec les fournisseurs de pare-feu tiers qui ne reconnaissent pas le processus:

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

Lorsque j'ai désactivé mon pare-feu, cela a bien fonctionné. Impossible de trouver une meilleure solution pour le moment.

Andrew Jones
la source
0

Pour référence future, lorsque vous installez Nginx, il bloquera SSH par défaut avec le message d'erreur "Ressource temporairement indisponible" sauf si vous ...

sudo ufw autorise ssh

andrerpena
la source
Windows 10 lui-même dispose d'un pare-feu. Pourquoi avez-vous suggéré cela?
Biswapriyo
Je suggère que pour les futurs utilisateurs ayant les mêmes problèmes parce que j'avais exactement le même problème et que c'est parce que Nginx bloquait SSH sur le serveur
andrerpena