Estou tentando fazer o ssh no meu servidor remoto dentro do Windows 10 Linux Subsystem. Estou usando o MS Windows 10 Home Insider Preview build 14366.
Enquanto estiver no prompt de comando, digite:
Alguns segundos depois de digitar o comando ssh, estou recebendo a seguinte mensagem:
ssh: conectar ao host domain.com porta 22: recurso temporariamente indisponível
Consigo conectar-me com sucesso usando o Putty e também com o ssh no Git Bash.
Então, isso me leva a acreditar que o problema está no meu PC local e, mais especificamente, no subsistema Linux. Ainda sou muito verde com o ambiente Linux e não sei como interpretar essa mensagem. Que recurso não está disponível e o que devo fazer para disponibilizá-lo?
windows-10
bash
ssh
kell
fonte
fonte
git
eapt-get
Respostas:
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
):Aqui está o porquê funciona: questão Nossa SSH não é um problema de firewall porque
nc
etelnet
trabalho para o mesmo host e porta (experimentetelnet <host> <port>
ounc <host> <port>
: você deve ver algo comoSSH-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 oProxyCommand
para todos os hosts, não sei como ele interage com outros hosts de configuração SSH que usamProxyCommand
. 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 outroProxyCommand
, o SSH usa nosso hackProxyCommand
, 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 umProxyCommand
ignorarão o outroProxyCommand
e tentarão resolver o endereço do host e conectar-se. diretamente com o Netcat.fonte
vi ~/.ssh/config
que abriu um arquivo vazio. Colei seus comandos, mas quando eu tentar salvar (esc ->: -> wq) ele me diz"~/.ssh/config" E212: Cannot open file for writing
ls -al ~/.ssh
?Isso também foi um problema para mim, pois era o meu firewall (Symantec) bloqueando todo o tráfego da Internet do bash.
Parece que é um problema geral com fornecedores de firewall de terceiros que não reconhecem o processo:
https://github.com/Microsoft/BashOnWindows/issues/809
Quando desativei meu firewall, ele funcionou bem. Não é possível encontrar uma solução melhor no momento.
fonte
No meu caso, recebi esse erro porque uma atualização do Windows causou problemas no meu comutador Hyper-V . Acontece que o host para o qual eu estava tentando ssh estava conectado a esse comutador - corrigindo o ssh restaurado.
fonte
Para referência futura, ao instalar o Nginx, ele bloqueará o SSH por padrão com a mensagem de erro "Recurso temporariamente indisponível", a menos que você ...
fonte