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 especificar facilmente uma porta remota.ssh username@server -p remote_port
Então, existe um ssh
parâ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?
Você não pode especificar a porta de origem para o cliente ssh.
Mas você pode usar
nc
como proxy, assim:De Como posso definir a porta de origem para SSH no servidor unbuntu? (em ServerFault) .
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 precisar usar esse comando com frequência para o trabalho diário, também poderá considerar definir uma regra de conversão de endereço de rede (NAT) em seu servidor.
Isso requer acesso de superusuário (normalmente
root
) em seu servidor para primeiro aplicar a única regra NAT. Observe que pode não ser permitido (ou eficaz) aplicar a regra NAT, mesmo quando você tem acesso de superusuário, se o seu "servidor" for realmente um contêiner (como um Docker) em vez de uma máquina.Falando de um sistema Linux típico com a
iptables
suíte, a regra NAT a ser aplicada em seu servidor1 para seu caso de exemplo pode ser assim:Esse comando instrui o kernel do Linux a fazer qualquer conexão para a porta server2-port do server2-ip-address para sair usando uma porta de origem escolhida dentro do intervalo 33101-33109 que está disponível naquele momento.
Uma vez que essa regra esteja em vigor, você se conecta ao seu servidor2 apenas com o seu habitual:
e você pode usar esse mesmo
ssh
comando também simultaneamente por quantas vezes precisar, desde que haja portas disponíveis no intervalo especificado na regra NAT.Observe, no entanto, que um
netstat
(ou comando equivalente) executado em seu servidor relata o endereço local da conexão como sendo o número da porta de origem não modificado , escolhido aleatoriamente, mesmo que o tráfego real entregue ao seu servidor2 carregue o número da porta de origem modificado .Para desfazer a regra NAT, o comando é o mesmo, exceto por uma
-D
opção no lugar do-I
.Ter a regra NAT aplicada automaticamente na inicialização depende de qual distribuição Linux você tem em seu servidor e se ele já possui alguma configuração de firewall em vigor ou não.
Não tenho experiência com sistemas do tipo BSD, mas acredito que haja um equivalente.