Come posso specificare una porta locale quando stabilisco connessioni SSH?


13

Ho due server ospitati in IDC. Posso usare solo le porte 20/21/22/23/3389 / 33101-33109 per stabilire connessioni tra due server. Il dispositivo di rete IDC bloccherà tutti gli altri pacchetti la cui porta di origine o di destinazione non è nell'elenco 20/21/22/23/80/3389 / 33101-33109. Ma la porta di origine di SSH è casuale.

Utilizzando il comando è possibile specificare facilmente una porta remota.ssh username@server -p remote_port

Quindi esiste un sshparametro di comando o un altro modo per specificare una porta di origine locale in modo da poter utilizzare, ad esempio, la porta 33101 per stabilire la connessione SSH?

La mia topologia di rete è così:
topologia di rete

Risposte:



2

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 iptablessuite, 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 sshcomando 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 -Dun'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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.