Editar:
@kasperd mencionou que você pode configurar o GatewayPorts para o usuário, pois não é necessário usar o nginx. Deixo a solução aqui para os outros.
Adicione isso a /etc/ssh/sshd_config
Match User <username>
GatewayPorts yes
Resposta original:
Eu encontrei uma solução para isso com ssh e nginx.
Não é perfeito porque eu tenho que instalar um servidor nginx em um com um proxy.
Eu tive que ativar SSL e dar a esta instância nginx um certificado SSL próprio.
A solução será assim:
C irá executar o seguinte comando para criar um Relay entre A e B:
ssh -R 445:1.0.0.2:444 [email protected] -p 22
Isso fará com que qualquer entrada na porta 445 em 1.0.0.1 seja redirecionada para 1.0.0.2:444.
Portanto, um usuário local em A agora pode executar wget https://localhost:445 --no-check-certificate
para obter a página de índice do seu serviço da web.
No entanto, ainda não está disponível publicamente.
(no caso de você se perguntar: a porta 445 está correta, preciso usar uma porta não utilizada ainda para a próxima parte)
Então eu criei um servidor nginx em A que redirecionará qualquer tráfego da porta 443 para a porta 445. E usou a seguinte configuração:
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
server_name proxy.<your-domain>.com;
location / {
proxy_pass https://127.0.0.1:445;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
Agora você pode usar seu navegador (no modo de navegação anônima no Firefox para evitar problemas com o certificado) para acessar o link .com: 443 e obter o resultado de seu Webservice.
O IP de proxy..com deve ser 1.0.0.1.
O que eu não gosto aqui é que eu tenho que criar um novo servidor que irá criar uma nova sessão criptografada em vez de apenas redirecionar o meu webservice localizado em B .
No entanto, esta é uma boa solução até encontrar uma solução melhor.