talvez você já conheça as 'duas notas adicionais sobre túneis ssh reversos', mas se você errou:
- O comando single de encapsulamento ssh reverso pode incluir muitos (não apenas um) port forward O
- reverse ssh tunnel também pode escutar IP local ou público (não apenas no host local de B)
Para obter (1)
, basta adicionar vários parâmetros -R, para (2)
, você deve colocar GatewayPorts clientspecified
dentro de /etc/ssh/sshd_config
do servidor B e reiniciar o serviço sshd. Normalmente, também queremos portas de escuta abaixo de 1024 do servidor B, que só tem permissão para raiz, então PermitRootLogin yes
também deve estar dentro desse arquivo sshd_config.
full ssh em execução no servidor A pode ter esta aparência:
ssh -R serverBpublicIP:2222:serverAlocalIP:22 \
-R serverBpublicIP:80:serverAlocalIP:80 \
-R serverBpublicIP:5901:serverAlocalIP:5901 \
-R serverBpublicIP:8080:serverAlocalIP:8080 root@serverBpublicIP
#--------------------------|----------------------------------------
# new listening B side | already listening local A side
e ele encaminhará 4 portas para o IP público do servidor B. Quando este comando estiver marcado e confirmado para funcionar bem, você pode adicionar o daemon -fNT
params e autoinicializá-lo com o systemd.
se o encaminhamento falhar, verifique se as novas portas estão livres:
serverB$ netstat -anpt | grep '2222\|80\|5901\|8080'
então, se você precisar de um número finito de portas TCP (e não usar algum aplicativo sip-phone ou rtp específico com demandas de intervalo de porta udp), o tunelamento reverso deve ser suficiente para a maioria das situações.