Port forwarding SSH


8

Voglio connettermi al mio computer (locale) dietro NAT attraverso un server pubblico accessibile (pubblico).

Sul locale:

ssh -g -R 8000:localhost:22 user@public

Quindi in pubblico:

ssh -p 8000 user@public 

Ma sto ottenendo error: Connection refused.

Quando accedo al server pubblico, posso verificare che il tunnel funzioni:

ssh -p 8000 localhost

Che apre ssh sul computer locale.

Sto sospettando qualcosa di sbagliato che il server pubblico dovrebbe agire come proxy trasparente? O come farlo funzionare così.

Risposte:


11

I forward della porta remota SSH verranno automaticamente associati a localhost / loopback per motivi di sicurezza. Spesso non è preferibile consentire ad altri host l'accesso alle porte inoltrate.

Per ignorare questo comportamento dovrai fare due cose:

  • Abilita l' GatewayPortsopzione sul server.
  • Specificare un indirizzo di bind o *da associare a tutti gli indirizzi sul client.

    ssh -R \*:8000:localhost:22 user@public
    

Sfuggire all'asterisco per assicurarsi che la shell non lo espanda.


0

Questo sembra più un problema con le impostazioni sul pubblico del computer remoto. Per impostazione predefinita, openssh sshd (che immagino sia quello in uso), l'impostazione GatewayPorts è diventata no, il che obbliga il port forwarding remoto ad ascoltare solo su localhost.

La soluzione sarebbe quindi quella di modificare il tuo / etc / ssh / sshd_config (o equivalente), impostando GatewayPorts su yes o su client specificato. Nel caso in cui si scelga il termine successivo, è necessario modificare la richiesta del tunnel in qualcosa come -R *: 8000: localhost: 22.

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.