Até onde eu sei, isso é um bug na WSL. Felizmente, a Microsoft irá corrigi-lo na próxima versão. Mas, por enquanto, podemos usar esse hack ligeiramente feio.
Atualização # 1 : Definitivamente um bug. Encontrei esse problema no Github. Sua solução proposta de reiniciar o shell também funciona para mim, se você não quiser passar por tudo isso.
TL; DR Adicione isso para END sua configuração SSH (geralmente localizada em ~/.ssh/config
):
Host *
ProxyCommand nc %h %p %r
Aqui está o porquê funciona: questão Nossa SSH não é um problema de firewall porque nc
e telnet
trabalho para o mesmo host e porta (experimente telnet <host> <port>
ou nc <host> <port>
: você deve ver algo como SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7
). Isso podemos usar a nosso favor.
O SSH permite o uso de proxies que recebem a entrada padrão e a enviam para a porta do servidor por meio da ProxyCommand
opção Normalmente, isso é usado para conectar redes a um host protegido usando um servidor SSH bastião intermediário, às vezes chamado de host de salto (consulte este link para obter mais informações).
Esse hack indica ao SSH para usar um proxy sem host (s) de salto. Portanto, ele contorna a alocação com falha de recursos TCP do SSH, enviando toda a alocação de recursos de rede para o Netcat, o que funciona. O SSH apenas executa o seu SSH sem nenhuma conexão de rede e o Netcat envia os dados brutos através de uma conexão TCP para o servidor SSH.
AVISO: Como isso modifica o ProxyCommand
para todos os hosts, não sei como ele interage com outros hosts de configuração SSH que usam ProxyCommand
. Eu tenho alguns servidores com os quais posso testar isso e atualizarei esta resposta com os resultados. Há uma chance de que não haja efeitos colaterais prejudiciais, mas não posso garantir isso.
Atualização 2: fiz alguns testes com alguns dos meus servidores, e isso parece funcionar. O SSH usa a entrada mais alta na configuração quando várias entradas se aplicam. Assim, um ProxyCommand
presente existente acima desse hack o substituirá. Quando o novo comando SSH é executado, ele relê a configuração do SSH e, se não houver outro ProxyCommand
, o SSH usa nosso hack ProxyCommand
, permitindo que ele se aplique apenas à sessão SSH "mais externa". Palavra de aviso: se você colocar o hack na parte superior do arquivo de configuração (ou acima da entrada para a qual você está tentando fazer o SSH), as sessões do SSH que exigem um ProxyCommand
ignorarão o outro ProxyCommand
e tentarão resolver o endereço do host e conectar-se. diretamente com o Netcat.