Como posso especificar uma porta local ao estabelecer conexões SSH?

12

Eu tenho dois servidores hospedados no IDC. Só posso usar as portas 20/21/22/23/3389 / 33101-33109 para estabelecer conexões entre dois servidores. O dispositivo de rede IDC bloqueará quaisquer outros pacotes cuja porta de origem ou destino não esteja na lista / intervalo 20/21/22/23/80/3389 / 33101-33109. Mas a porta de origem do SSH é aleatória.

Usando o comando, pode-se facilmente especificar uma porta remota.ssh username@server -p remote_port

Portanto, existe um sshparâmetro de comando ou alguma outra maneira de especificar uma porta de origem local para que eu possa usar, por exemplo, a porta 33101 para estabelecer a conexão SSH?

Minha topologia de rede é assim:
topologia de rede

fajin yu
fonte

Respostas:

2

Para situações pontuais ou ocasionais, a abordagem ProxyCommand é facilmente muito conveniente.

Por outro lado, se você precisar de várias conexões simultâneas ou quando talvez precisar usar esse comando frequentemente para o trabalho diário, considere também definir uma regra de tradução de endereço de rede (NAT) no servidor.

Isso requer acesso de superusuário (normalmente root) no servidor para aplicar primeiro a única regra NAT. Observe que talvez não seja permitido (ou eficaz) aplicar a regra NAT, mesmo quando você tiver acesso de superusuário, se o "servidor" for realmente um contêiner (como o Docker) em vez de uma máquina.

Falando em um sistema Linux típico com o iptablesconjunto, a regra NAT a ser aplicada no seu servidor1 para o seu caso de amostra pode ser como:

iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109

Esse comando instrui o kernel do Linux a fazer conexões para a porta server2-port do server2-ip-address para sair usando uma porta de origem escolhida no intervalo 33101-33109 que está disponível naquele momento.

Quando essa regra estiver em vigor, você se conectará ao seu servidor2 apenas com o seu habitual:

ssh username@server2 -p remote_port

e você também pode usar esse mesmo sshcomando simultaneamente quantas vezes for necessário, desde que haja portas disponíveis no intervalo especificado na regra NAT.

Observe, no entanto, que um netstat(ou comando equivalente) executado no servidor relata o endereço local da conexão como o número da porta de origem não modificada , escolhida aleatoriamente, mesmo que o tráfego real entregue ao servidor2 carregue o número da porta de origem modificada .

Para desfazer a regra NAT, o comando é o mesmo, exceto por uma -Dopção no lugar do -I.

Para que a regra NAT seja aplicada automaticamente na inicialização, depende da distribuição do Linux que você possui no servidor e se ela já possui alguma configuração de firewall ou não.

Não tenho experiência com sistemas do tipo BSD, mas acredito que haja um equivalente.

LL3
fonte