2012-01-10 12 views
14

Attualmente sto cercando di capire come collegare SSH ai server dietro firewall che negano tutte le connessioni in entrata. I server possono uscire SSH, quindi mi chiedo se c'è un modo per ottenere il server dietro il firewall per creare un tunnel SSH sulla mia workstation, quindi consentire alla mia workstation di inviare comandi al server attraverso di essa?SSH al server dietro il firewall

Ho esaminato il tunneling/reverse tunneling, ma queste sembrano essere soluzioni di port forwarding, che non funzioneranno in quanto il firewall nega tutte le connessioni su tutte le porte.

Idealmente, vorrei fare questo in Ruby (utilizzando il Net :: gemma SSH), in modo tale che invece di aprire una nuova connessione come:

Net::SSH.start('host', 'user', :password => "password") 

potessi in qualche modo legarsi a una galleria esistente.

Grazie!

risposta

25

Questo è abbastanza semplice se si ha il controllo sul server. Darò la versione da riga di comando, e si può lavorare in qualsiasi quadro che ti piace:

server$ ssh -R 9091:localhost:22 client.example.egg 

client$ ssh -p 9091 localhost 

Il server stabilisce una connessione con il cliente in primo luogo, che si mette in ascolto sulla fine emote "R" (vale a dire la client) sulla porta 9091 (qualcosa che ho appena inventato) e inoltra quelle connessioni a localhost:22, cioè al server ssh su se stesso.

Il client deve quindi connettersi alla propria porta locale 9091, che viene inoltrata in modo trasparente al server ssh del server.

Questo di solito provoca il caos per il controllo della chiave pubblica (e la sicurezza aderente!), Perché il client ssh del client non sa che localhost:9091 è lo stesso di server:22. Se il tuo cliente è Putty, allora hai la possibilità di fornire il nome del server "reale" da qualche parte in modo che le credenziali possano essere cercate correttamente.

+0

Esiste un modo per indicare la figura del localhost. Il mio indirizzo IP cambia e voglio sempre essere in grado di ssh sul server. Ho un risolutore DNS già impostato – MichaelH

+0

@ Michael: Non sono sicuro di aver capito. Non è possibile mantenere connessioni TCP se l'indirizzo IP di uno dei peers cambia ... –

+0

è possibile eseguire il tunnel anche attraverso http? – Will

0

A meno che non sia possibile creare (e mantenere) un tunnel dall'host a cui si sta tentando di connettersi per primo (che consentirebbe quindi di connettersi attraverso quel tunnel), no non è possibile. Questo è il punto di un firewall: prevenire l'accesso non autorizzato a una rete.

Tuttavia, il firewall non deve bloccare un tunnel, sebbene dipenda esattamente da come viene gestito il tunnel. Un tunnel di port forwarding impostato utilizzando ssh's tunneling features sovvertire il firewall. Tuttavia potrebbe anche metterti nei guai con l'amministratore della rete remota.

Quindi, in ultima analisi, è necessario parlare con l'amministratore di rete per ottenere le regole del firewall in modo rilassato, al fine di farlo senza bisogno di tunnel o almeno di ottenere l'autorizzazione per avere un tunnel.

Problemi correlati