Este guia descreve os passos para configurar um servidor SSH dentro do Subsistema Windows para Linux 2 (WSL2), utilizando o Ubuntu, e habilitar o acesso a ele a partir de máquinas remotas. Essa funcionalidade é particularmente útil para desenvolvedores que buscam interagir com seu ambiente Linux do WSL2 de forma remota, integrando-o facilmente a fluxos de trabalho que exigem acesso SSH.
Configuração do Servidor SSH no WSL2
1. Instalação e Reinstalação do OpenSSH Server
Para garantir que o serviço SSH esteja em um estado limpo e configurado corretamente, é uma boa prática reinstalá-lo. Execute os seguintes comandos na sua distribuição WSL2 (Ubuntu):
sudo apt update
sudo apt remove --purge openssh-server -y
sudo apt install openssh-server -y
2. Ajustando as Configurações do Servidor SSH
Após a instalação, é necessário modificar o arquivo de configuração do OpenSSH para permitir as conexões desejadas. Abra o arquivo sshd_config com um editor de texto de sua preferência (ex: nano ou vim):
sudo nano /etc/ssh/sshd_config
Localize e ajuste as seguintes diretivas (descomente-as se estiverem comentadas, removendo o # inicial, e modifique os valores conforme indicado):
Port 2222: Altera a porta padrão do SSH (22) para 2222. Usar uma porta não padrão pode ajudar a evitar alguns scanners de porta comuns e conflitos com outros serviços.ListenAddress 0.0.0.0: Permite que o servidor SSH aceite conexões de qualquer interface de rede disponível no WSL2.PermitRootLogin yes: Habilita a autenticação direta para o usuário root. Recomendação: Em ambientes de produção, é mais seguro desabilitar o login de root e usar um usuário comum comsudo. Para fins de desenvolvimento e testes, pode ser aceitável.PasswordAuthentication yes: Ativa a autenticação baseada em senha.ChallengeResponseAuthentication noUsePAM yes
Salve as alterações e feche o editor.
3. Reiniciando o Serviço SSH
Para que as novas configurações entrem em vigor, o serviço SSH deve ser reiniciado:
sudo service ssh restart
Você pode verificar o status do serviço para confirmar que ele está ativo e escutando na porta configurada:
sudo service ssh status
A saída deverá indicar que o serviço está active (running) e escutando na porta 2222.
4. Teste de Conexão Local no WSL2
Antes de tentar a conexão remota, verifique se o SSH está funcionando corretamente dentro do próprio ambiente WSL2. Execute o seguinte comando, substituindo seu_usuario pelo seu nome de usuário no Ubuntu do WSL2:
ssh seu_usuario@localhost -p 2222
Você deverá ser solicitado a inserir sua senha e, em seguida, ter acesso ao seu terminal WSL2 via SSH.
Habilitando Acesso Remoto através do Windows
1. Identificando o Endereço IP do WSL2
Para que o tráfego externo chegue ao seu WSL2, o Windows precisa saber para onde encaminhar as conexões. O WSL2 possui um endereço IP interno dinâmico. Para obtê-lo, primeiro instale a ferramenta net-tools (se ainda não tiver):
sudo apt install net-tools -y
Em seguida, execute ifconfig e anote o endereço IP listado para a interface eth0, que tipicamente começa com 172.x.x.x:
ifconfig
Este IP será utilizado para configurar as regras de encaminhamento.
2. Encaminhamento de Portas no Windows (Port Proxy)
No Windows, você precisa configurar uma regra de encaminhamento de porta para redirecionar o tráfego da porta do seu host Windows para a porta do WSL2. Abra o PowerShell como Administrador e execute o seguinte comando:
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=localhost
Este comando instrui o Windows a escutar na porta 2222 em todas as suas interfaces (0.0.0.0) e encaminhar qualquer conexão para a porta 2222 no localhost. O Windows gerenciará automaticamente o roteamento para o IP interno do WSL2.
Para verificar as regras de encaminhamento de porta existentes, execute:
netsh interface portproxy show v4tov4
Você deverá ver uma entrada semelhante a 0.0.0.0 2222 localhost 2222.
3. Configurando a Regra de Firewall do Windows
Para permitir que conexões externas cheguem ao seu computador Windows e, consequentemente, ao WSL2 via encaminhamento de porta, você deve adicionar uma regra no Firewall do Windows. Ainda no PowerShell como Administrador, execute:
netsh advfirewall firewall add rule name="WSL2 SSH Acesso Remoto" dir=in action=allow protocol=TCP localport=2222
Esta regra permite que o tráfego TCP de entrada na porta 2222 seja aceito pelo firewall do Windows.
Conectando-se Remotamente ao WSL2
Com todas as configurações aplicadas, você já pode se conectar ao seu ambiente WSL2 a partir de qualquer máquina remota. Use o endereço IP público (ou nome de host) do seu computador Windows e a porta que você configurou:
ssh seu_usuario@endereco_ip_publico_windows -p 2222
Substitua seu_usuario pelo nome de usuário do seu WSL2 e endereco_ip_publico_windows pelo IP ou hostname acessível da sua máquina Windows.