Per situazioni una tantum, o comunque occasionali, l'approccio ProxyCommand è facilmente molto conveniente.
D'altra parte, se hai bisogno di più connessioni simultanee, o quando forse hai bisogno di usare quel comando frequentemente per il lavoro quotidiano, potresti anche considerare di impostare una regola NAT (Network-Address-Translation) sul tuo server.
Ciò richiede l'accesso superutente (in genere root
) sul server per applicare prima un'unica regola NAT. Si noti che potrebbe non essere affatto consentito (o efficace) applicare la regola NAT, anche quando si dispone di accesso da superutente, se il "server" è in realtà un contenitore (come Docker) anziché una macchina.
Parlando di un tipico sistema Linux con la iptables
suite, la regola NAT da applicare sul tuo server1 per il tuo caso di esempio potrebbe essere come:
iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109
Tale comando indica al kernel Linux di effettuare qualsiasi connessione verso la porta server2-porta dell'indirizzo IP server2 per uscire utilizzando una porta di origine scelta nell'intervallo 33101-33109 disponibile in quel momento.
Una volta che quella regola è in atto, ti connetti al tuo server2 proprio con il solito:
ssh username@server2 -p remote_port
e puoi usare questo stesso ssh
comando anche contemporaneamente per tutte le volte che ti servono, purché ci siano porte disponibili nell'intervallo specificato nella regola NAT.
Si noti tuttavia che un netstat
(o comando equivalente) eseguito sul server riporta l'indirizzo locale della connessione come il numero di porta di origine non modificato , scelto casualmente, anche se il traffico effettivo che viene consegnato al server2 porta il numero di porta di origine modificato .
Per annullare la regola NAT, il comando è lo stesso ad eccezione di -D
un'opzione al posto di -I
.
L'applicazione della regola NAT automaticamente all'avvio dipende dalla distribuzione Linux presente sul server e dalla presenza o meno di una configurazione firewall.
Non ho esperienza con sistemi simili a BSD, ma confido che esista un equivalente.