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 nc
et telnet
fonctionne 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' ProxyCommand
option. 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 ProxyCommand
pour 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 ProxyCommand
pré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 ProxyCommand
ignoreront l'autre ProxyCommand
et tenteront plutôt de résoudre l'adresse de l'hôte et de se connecter directement avec Netcat.