I have NGINX configured like this as a reverse proxy for http requests:
server {
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://203.0.113.1:3000;
}
}
Também quero fazer pedidos de proxy ssh (porta 22). Posso adicionar outro bloco de servidor como este ao mesmo arquivo de configuração:
server {
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://203.0.113.1:22;
}
}
De modo que o resultado final é este:
server {
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://203.0.113.1:3000;
}
}
server {
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://203.0.113.1:22;
}
}
TIA,
Ole
nginx
está agindo como umhttp
proxy. Se você configurá-lo para reverter a porta proxy 22, não permitirá que você transmita tráfego SSH - somentehttp
tráfego para o servidor SSH, o que obviamente falhará.Respostas:
O protocolo ssh não é baseado em HTTP e, como tal, não pode ser usado como proxy por meio
proxy_pass
dongx_http_proxy_module
No entanto, recentemente, começando com o nginx 1.9.0 (lançado como estável na 1.10.0 em 26/04/2016), o nginx ganhou suporte para fazer proxy de fluxo TCP , o que significa que, se você tiver uma versão suficientemente recente do nginx, você pode, de fato, conexões proxy ssh com ele (no entanto, observe que não seria possível adicionar nada parecido
X-Real-IP
com a conexão com proxy, pois isso não é baseado em HTTP).Para mais informações e exemplos, consulte:
fonte
Desde o Nginx versão 1.9.0, o NGINX suporta o módulo ngx_stream_core_module, ele deve ser ativado com o --with-stream. Quando o módulo de fluxo está ativado, é possível fazer o proxy ssh protocol tcp
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
fonte
ssh [email protected]
essh [email protected]
- seria ótimo. É de limitação protocolo (SSH não vai dar usos nome do cliente DNS)srv1
e 222 parasrv2
), ou usando sessões ssh aninhadas, nas quais você primeiro ssh no servidor público / IP e, a partir daí, ssh nas folhas; por exemplossh [email protected] 'ssh [email protected]'
,.HOST
cabeçalho, por isso é fácil distinguir em qual site ele se destina ... As sessões SSH aninhadas são uma espécie de solução, mas uma solução confusa - mas que funciona. Acabei com diferentes portas em nossa rede de borda - o bom e velho NAT como a solução mais confiável e confiável.