2011-11-10 17 views
6

Ho uno scenario specifico che voglio risolvere. Io attualmente connettersi a un host tramite port forwarding:ssh port forwarding (tunneling) in linux

laptop -> gateway -> remote_server_1 

e un altro host:

laptop -> remote_server_2 

con login senza password lavorare su entrambi. Nessuno dei server remoti è visibile al mondo esterno. Ora sto eseguendo un servizio su remote_server_2, che mi piacerebbe poter accedere a remote_server_1. Suppongo di dover configurare l'inversione della porta inversa da remote_server_1 al mio portatile, e poi a remote_server_2, ma non sono sicuro di come farlo. Qualcuno si imbatte in questa situazione prima?

Edit: La soluzione completa in caso chiunque altro ne ha bisogno:

mylaptop$ ssh -L 3001:localhost:3000 server_2 
server_2$ netcat -l 3000 

Poi configurazione tunnel tramite gateway a server_1:

ssh -t -t -L 3003:server_1:22 gateway 

accedervi dal server_1:

ssh -R 3002:localhost:3001 -p3003 localhost 
echo "bar" | nc localhost 3002` 

e hey presto server_2 mostra bar :-)

risposta

4

Devi fare esattamente come hai descritto. Configurare il server su server_2.

mylaptop$ ssh -L 3001:localhost:3000 server_2 
server_2$ netcat -l 3000 

Quindi accedere ad esso da server_1.

mylaptop$ ssh -R 3002:localhost:3001 server_1 
server_1$ echo "foo" | netcat localhost 3002 

server_2 mostrerà foo.

+0

Funziona quasi, tranne che devo passare al server_1. Quindi, se faccio: MyLaptop $ ssh -L 3003: Gateway: 3002 server_1 e MyLaptop $ ssh -R 3003: localhost: 3000 -p3003 localhost io sono sulla strada giusta? Helpfully server_1 non ha netcat su di esso (non ho diritti di amministratore su quello) – tdc

+0

Mi dispiace, ma ho realizzato che netcat è nc. Comunque non funziona ancora abbastanza. – tdc

+0

Ti darò la risposta accettata, in quanto mi ha dato abbastanza indizi per andare avanti - risposta completa nella mia modifica. – tdc