No Win10, no WSL 2 rodando Ubuntu 20, instalei o sshd rodando em uma porta diferente da 22, ou seja, 2222. Ao firewall eu adicionei uma regra de entrada para a porta TCP 2222.
No prompt de comando do Windows, ssh -p 2222 127.0.0.1
funciona. O mesmo acontece ssh -p 2222 xxx.xxx.xxx.xxx
com o quad pontilhado relatado pela WSL ifconfig
.
A partir do prompt de comando do Windows ( não WSL), ipconfig
relata 192.168.1.yyy
, seu endereço no meu roteador. Por meio desse endereço, o Windows alcança e é alcançado por outros hosts 192.168.1 nesse roteador (Windows, Mac, Linux; ping, http, discos de montagem, ssh somente do WSL).
No prompt de comando do Windows, ssh -p 2222 192.168.1.yyy
falha com Connection refused
. Como posso fazer isso funcionar?
O PuTTY 0.74 se comporta da mesma forma que o ssh do prompt de comando do Windows.
ssh -v -v -v
adiciona diagnósticos possivelmente úteis:
debug1: Connecting to 192.168.1.100 [192.168.1.yyy] port 2222.
debug3: finish_connect - ERROR: async io completed with error: 10061, io:000002E243EDC460
debug1: connect to address 192.168.1.yyy port 2222: Connection refused
Se em sshd_config eu restringir ListenAddress para
192.168.1.yyy:2222
, os outros ssh's de entrada falharão conforme o esperado. Portanto, o que precisa ser configurado pode não ser o ssh, mas o próprio WSL.ifconfig -a
não menciona nenhum 192.168.Contexto: este é um trampolim para habilitar o ssh no WSL de outros hosts do roteador. Por enquanto, o /etc/ssh/sshd_config do WSL usa PasswordAuthentication; Mais tarde, mudarei isso para PubKeyAuthentication.
Resposta curta para WSL2 - Use o Windows OpenSSH como um jumphost nas instâncias WSL. Você pode fazer isso enviando ssh para o Windows e executando o
wsl
comando (por exemplossh user@windowsip wsl
, ) ou, se precisar de algo mais complicado (acesso ssh "real"), usando o SSH no host do Windows e na instância do WSL (por exemplossh -o "ProxyCommand ssh -W %h:%p windowshost.local" -o "StrictHostKeyChecking=no -p 2224 localhost
, ).Para mais detalhes, veja esta resposta .