Per quanto ne so, questo è un bug in WSL. Speriamo che Microsoft lo risolva nella prossima build. Ma per ora, possiamo usare questo hack un po 'brutto.
Aggiornamento n. 1 : sicuramente un bug. Trovato questo problema su Github. La loro proposta di soluzione alternativa per il riavvio della shell funziona anche per me se non si desidera eseguire tutto ciò.
TL; DR Aggiungi questo per END la tua configurazione SSH (solitamente situata in ~/.ssh/config
):
Host *
ProxyCommand nc %h %p %r
Ecco perché funziona: problema nostro SSH non è un problema di firewall perché nc
e telnet
lavorare per lo stesso host e la porta (provate telnet <host> <port>
o nc <host> <port>
: si dovrebbe vedere qualcosa di simile SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7
). Questo possiamo usarlo a nostro vantaggio.
SSH consente l'uso di proxy che accettano input standard e lo inviano alla porta del server tramite l' ProxyCommand
opzione. Normalmente viene utilizzato per eseguire il tunneling delle reti verso un host protetto utilizzando un server SSH intermedio, a volte chiamato host di salto (vedere questo collegamento per ulteriori informazioni).
Questo hack dice a SSH di usare un proxy senza host di salto. Quindi, aggira l'allocazione non riuscita di SSH delle risorse TCP spingendo tutta l'allocazione delle risorse di rete su Netcat, che funziona. SSH fa semplicemente la sua cosa SSH senza alcuna connessione di rete e Netcat invia i dati grezzi tramite una connessione TCP al server SSH.
ATTENZIONE: poiché questo modifica il ProxyCommand
per tutti gli host, non so come interagisce con altri host di configurazione SSH che usano ProxyCommand
. Ho alcuni server con cui posso provare questo, e aggiornerò questa risposta con i risultati. È possibile che non vi siano effetti collaterali dannosi, ma non posso garantirlo.
Aggiornamento n. 2: ho eseguito alcuni test con alcuni dei miei server e questo sembra funzionare. SSH utilizza la voce più in alto nella configurazione quando si applicano più voci. Pertanto, un ProxyCommand
regalo esistente al di sopra di questo hack lo annullerebbe. Quando viene eseguito il nuovo comando SSH, rilegge la configurazione SSH e, se non ce n'è altro ProxyCommand
, SSH utilizza il nostro hack ProxyCommand
, consentendogli di applicarsi solo alla sessione SSH "più esterna". Avvertenza: se si posiziona l'hack nella parte superiore del file di configurazione (o sopra la voce a cui si sta tentando di eseguire SSH), le sessioni SSH che richiedono a ProxyCommand
ignoreranno l'altra ProxyCommand
e tenteranno invece di risolvere l'indirizzo dell'host e connettersi direttamente con Netcat.