Tunnel di porte inverse

50

Devo mostrare a qualcuno un sito web in esecuzione sul mio computer locale domani. Normalmente lo farei tramite il port forwarding sul mio router locale, ma grazie al malfunzionamento dell'hardware e alla sua sostituzione, il mio router attuale non mi permette di effettuare il port forwarding.

Così bloccato da questo ritardo e non volendo spingere l'intera cosa su un server appropriato, ho avuto una pazza idea: Posso semplicemente inoltrare la mia porta a un server esterno su SSH?

Ho già fatto il tunneling delle porte, ma di solito lo faccio nel modo giusto:

  • Mi collego a una casella remota e chiedo che la porta 12345 si presenti sulla mia macchina locale alla porta 12345.
  • Inizio qualcosa su P12345 sulla macchina remota
  • Posso accedervi tramite localhost: 12345

Che cosa voglio fare:

  • Collegati a un PC remoto e chiedi che il suo P12345 locale recuperi le cose dal mio P12345 locale (oltre il tunnel)
  • Avvio di qualcosa sul mio computer locale su P12345
  • Altre persone possono accedere al telecomando: 12345 e vedere il mio host locale: 12345
posta Oli 22.06.2011 - 18:46

2 risposte

83

Il comando per l'inoltro della porta 80 dal computer locale ( localhost ) all'host remoto sulla porta 8000 è:

ssh -R 8000:localhost:80 [email protected]

Ciò richiede un ulteriore aggiustamento sul server SSH, aggiungi le linee a /etc/ssh/sshd_config :

Match User oli
   GatewayPorts yes

Successivamente, ricarica la configurazione dal server che esegue sudo reload ssh .

L'impostazione GatewayPorts yes fa sì che SSH leghi la porta 8000 sull'indirizzo jolly, quindi diventa disponibile all'indirizzo pubblico di remote-machine ( remote-machine:8000 ).

Se è necessario disporre dell'opzione per non associare tutto all'indirizzo jolly, modificare GatewayPorts yes in GatewayPorts clientspecified . Poiché ssh si collega all'indirizzo di loopback per impostazione predefinita, devi specificare un bind_address vuoto per il binding dell'indirizzo con caratteri jolly:

ssh -R :8000:localhost:80 [email protected]

Il : prima di 8000 è obbligatorio se GatewayPorts è impostato su clientspecified e vuoi consentire l'accesso pubblico a remote-machine:8000 .

Estratti manuali pertinenti:

ssh (1)

  

-R [bind_address:] porta: host: hostport
  Specifica che la porta indicata sull'host (server) remoto deve essere inoltrata all'host e alla porta specificati sul lato locale. Ciò funziona allocando un socket per l'ascolto della porta sul lato remoto e ogni volta che viene effettuata una connessione a questa porta, la connessione viene inoltrata sul canale protetto e viene stabilita una connessione per ospitare l'host della porta dal computer locale. Per impostazione predefinita, il socket di ascolto sul server sarà associato solo all'interfaccia di loopback. Questo può essere sovrascritto specificando bind_address. Un bind_ind vuoto, o l'indirizzo '*', indica che il socket remoto dovrebbe ascoltare su tutte le interfacce. La specifica di un bind_indirizzo remoto avrà esito positivo solo se l'opzione GatewayPorts del server è abilitata (vedi sshd_config (5)) .

sshd_config (5)

  

GatewayPorts
  Specifica se gli host remoti possono connettersi alle porte inoltrate per il client. GatewayPorts può essere utilizzato per specificare che sshd dovrebbe consentire ai port forwarding in remoto di collegarsi a indirizzi non di loopback, consentendo così la connessione di altri host. L'argomento può essere "no" per forzare l'inoltro remoto delle porte solo all'host locale, "sì" per forzare i port forwarding delle porte a collegarsi all'indirizzo wildcard, o "clientspecified" per consentire al client di selezionare il indirizzo al quale è associato l'inoltro. l'impostazione predefinita è "no".

Vedi anche:

risposta data Lekensteyn 22.06.2011 - 19:28
12

Se il server ha GatewayPorts no , è possibile ottenere lo stesso risultato eseguendo ssh -g -L 8001:localhost:8000 [email protected] sul server dopo aver eseguito il comando ssh -R sul client. Ciò renderà la porta di loopback 8000 sul server accessibile su tutte le interfacce sulla porta 8001.

    
risposta data FaST4 20.06.2016 - 12:17

Leggi altre domande sui tag