Pour des situations ponctuelles, ou de toute façon occasionnelles, l'approche ProxyCommand est facilement très pratique.
D'un autre côté, si vous avez besoin de plusieurs connexions simultanées, ou lorsque vous devez peut-être utiliser fréquemment cette commande pour le travail quotidien, vous pouvez également envisager de définir une règle de traduction d'adresse réseau (NAT) sur votre serveur.
Cela nécessite (généralement root
) un accès superutilisateur sur votre serveur pour appliquer d'abord une seule règle NAT. Notez qu'il peut ne pas être autorisé (ou efficace) d'appliquer la règle NAT, même lorsque vous disposez d'un accès superutilisateur, si votre "serveur" est en fait un conteneur (comme un Docker) au lieu d'une machine.
En parlant d'un système Linux typique avec la iptables
suite, la règle NAT à appliquer sur votre serveur1 pour votre exemple de cas pourrait être comme:
iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109
Cette commande demande au noyau Linux de se connecter au port server2-port de server2-ip-address pour sortir en utilisant un port source choisi dans la plage 33101-33109 qui est disponible à ce moment.
Une fois cette règle en place, vous vous connectez à votre serveur2 juste avec votre habitude:
ssh username@server2 -p remote_port
et vous pouvez également utiliser cette même ssh
commande simultanément autant de fois que nécessaire, tant qu'il existe des ports disponibles dans la plage spécifiée dans la règle NAT.
Notez cependant qu'une netstat
(ou une commande équivalente) exécutée sur votre serveur signale l'adresse locale de la connexion comme étant le numéro de port source non modifié , choisi au hasard, même si le trafic réel qui est délivré à votre serveur2 porte le numéro de port source modifié .
Pour annuler la règle NAT, la commande est la même sauf pour une -D
option à la place de -I
.
Le fait que la règle NAT soit appliquée automatiquement au démarrage dépend de la distribution Linux que vous avez sur votre serveur et de la présence ou non d'une configuration de pare-feu.
Je n'ai aucune expérience avec les systèmes de type BSD, mais j'espère qu'il existe un équivalent.