Configuração de Proxy SSH para Acessar Máquinas Internas via Tencent Cloud
Para acessar máquinas em redes internas sem IP público, é possível usar um servidor com IP público, como uma instância Tencent Cloud, como intermediário. Isso envolve configurar proxy SSH reverso e direto.
Proxy SSH Reverso
A máquina interna (chamada de Máquina Interna) inicia uma conexão SSH reversa para o servidor com IP público (Servidor Externo). Isso mapeia uma porta no Servidor Externo para a porta SSH da Máquina Interna.
Configuração na Máquina Interna
Execute o seguinte comando na Máquina Interna para estabelecer o proxy reverso:
ssh -CNfR 2000:localhost:22 usuario@exemplo.com
A opção -C comprime os dados, -N evita comandos remotos, -f executa em segundo plano, e -R define o mapeamento reverso. Aqui, a porta 2000 no Servidor Externo é mapeada para a porta 22 (SSH) na Máquina Interna.
Verificação
No Servidor Externo, verifique o acesso à Máquina Interna:
ssh -p2000 usuario@localhost
Se bem-sucedido, você fará login na Máquina Interna.
Proxy SSH Direto
Para simplificar o acesso, configure um proxy direto no Servidor Externo. Isso redireciona uma porta adicional no Servidor Externo para a porta do proxy reverso, permitindo acesso direto à Máquina Interna via uma única porta.
Configuração no Servidor Externo
No Servidor Externo, execute:
ssh -CNfL *:3000:localhost:2000 usuario@exemplo.com
A opção -L define o mapeamento direto. Aqui, a porta 3000 no Servidor Externo é redirecionada para a porta 2000 (que aponta para a Máquina Interna).
Verificação
Teste o acesso à Máquina Interna através da porta direta:
ssh -p3000 usuario@exemplo.com
Substitua usuario pelo nome de usuário na Máquina Interna. O sucesso indica que a configuração está correta.
Considerações Importantes
Configuração de GatewayPorts
Em ambas as máquinas, edite o arquivo de configuração SSH /etc/ssh/sshd_config e defina GatewayPorts yes para permitir encaminhamento de portas.
Portas no Tencent Cloud
No console Tencent Cloud, adicione regras de firewall para permitir tráfego nas portas usadas (por exemplo, 3000). Use comandos do sistema para abrir portas:
sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent
Estabilidade da Conexão
Para manter a conexão ativa, configure login SSH sem senha e use autossh para reconexão automática.
Login SSH Sem Senha
Na Máquina Interna, gere chaves SSH e copie a chave pública para o Servidor Externo:
ssh-keygen
ssh-copy-id -i ~/.ssh/*.pub usuario@exemplo.com
Repita para o usuário root, se necessário.
Configuração do autossh
Na Máquina Interna, use autossh para monitorar e reconectar automaticamente:
autossh -M 2100 -CNfR 2000:localhost:22 usuario@exemplo.com
Isso monitora as portas 2100 e 2101 para manter a sessão SSH ativa.
Inicialização Automática
Para iniciar o proxy reverso na inicialização, adicione o comando autossh ao arquivo /etc/rc.local. Certifique-se de que o login sem senha está configurado para o root.
Se o Servidor Externo to reiniciado, reinicie o serviço de proxy com:
systemctl restart rc-local.service
Conflitos de Portas
Evite usar a porta do proxy direto (por exemplo, 3000) como porta de escuta SSH no Servidor Externo, pois isso pode causar conflitos. Remova linhas como Port 3000 do arquivo /etc/ssh/sshd_config.