[email protected]$ autossh -R 12345:localhost:22 [email protected]
Più tardi:
[email protected]$ autossh -L 23456:localhost:12345 [email protected]
[email protected]$ ssh [email protected] -p 23456
Quello che potresti fare è questo:nel passaggio 1 inoltra una porta remota dal PC dell'ufficio al server (12345
è usato come esempio, dovrebbe andare bene qualsiasi porta>1024). Ora connettendoti a 12345 sul server dovresti connetterti alla porta 22 su officepc.
Nel passaggio 2, inoltra la porta 23456 dal computer di casa alla 12345 sul server (da qui viene inoltrata a officepc:22, come impostato nel passaggio 1)
Al passaggio 3, ti connetti alla porta locale 23456 con il login del PC dell'ufficio . Questo viene inoltrato al passaggio 2 alla porta 12345 sul tuo server e al passaggio 1 al PC dell'ufficio.
Nota che sto usando autossh per gli inoltri, poiché è un wrapper ssh che riconnette automaticamente il tunnel se viene disconnesso; comunque funzionerebbe anche il normale ssh, purché la connessione non si interrompa.
C'è una possibile vulnerabilità:chiunque possa connettersi a localhost:12345 su serverpc ora può connettersi a officepc:22 e provare ad hackerarlo. (Nota che se stai utilizzando un server SSH, dovresti comunque proteggerlo al di sopra delle protezioni di base che sono attive per impostazione predefinita; ti consiglio di disabilitare almeno l'accesso root e disabilitare l'autenticazione con password - vedi ad esempio questo)
Modifica :L'ho verificato con la stessa configurazione e funziona. GatewayPorts no
riguarda solo i porti aperti al mondo in generale, non i tunnel locali. Ecco cosa sono le porte inoltrate:
homepc:
outgoing ssh to serverpc:22
listening localhost:23456 forwarded through ssh tunnel
serverpc:
listening ssh at *:22
incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
outgoing ssh to serverpc:22
incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22
Quindi, per quanto riguarda lo stack di rete, è tutto il traffico locale sulle rispettive interfacce di loopback (più le connessioni ssh a serverpc); pertanto, GatewayPorts
non è selezionato affatto.
Esiste, tuttavia, la direttiva AllowTcpForwarding
:se questo è no
, questa configurazione fallirà poiché non è consentito alcun inoltro, nemmeno attraverso l'interfaccia di loopback.
Avvertenze :
-
se usi autossh e ssh recente, potresti voler usare
ServerAliveInterval
di ssh eServerAliveCountMax
per mantenere in piedi il tunnel. Autossh ha un controllo integrato, ma a quanto pare ha alcuni problemi su Fedora.-M0
lo disabilita e-oServerAliveInterval=20 -oServerAliveCountMax=3
controlla se la connessione è attiva - prova ogni 20 secondi, se fallisce 3 volte di seguito, interrompe ssh (e autossh ne crea uno nuovo):autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected] autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
-
potrebbe essere utile riavviare il tunnel ssh se il forward fallisce, usando
-oExitOnForwardFailure=yes
- se la porta è già collegata, potresti ottenere una connessione SSH funzionante, ma nessun tunnel inoltrato. -
usando
~/.ssh/config
per le opzioni (e le porte) è consigliabile, altrimenti le righe di comando diventano troppo prolisse. Ad esempio:Host fwdserverpc Hostname serverpc User notroot ServerAliveInterval 20 ServerAliveCountMax 3 ExitOnForwardFailure yes LocalForward 23456 localhost:12345
Quindi puoi utilizzare solo l'alias del server:
autossh -M0 fwdserverpc
Se puoi ssh al server interno da casa e dal server interno alla macchina Linux dell'ufficio, allora da casa puoi usare ssh ProxyCommand
per rimbalzare silenziosamente attraverso il server alla macchina interna tramite nc
(netcat)
# ~/.ssh/config on your home machine:
Host internalpc
ForwardAgent yes
ProxyCommand ssh [email protected] exec nc internal.pc.example.com %p
Quindi devi solo ssh [email protected]
e sei silenziosamente inoltrato attraverso la macchina server, nessuna apertura di porte o tunnel richiesta su entrambe le estremità.
Installa Robo-TiTO nel computer a cui desideri accedere tramite SSH da remoto.
- Ciò ti consentirà di accedere a SSH utilizzando le app client di Google Talk ovunque.
- Non è necessario un indirizzo IP pubblico o un'impostazione speciale.
- È gratuito e open source, non paga più alcun servizio applicativo.
- Non è necessario aprire la porta SSH (proteggi il tuo computer).
- Non è necessario aprire alcun tunneling (ad es. VPN o qualcosa del genere)
Le seguenti istruzioni di installazione sono obsolete, poiché il sito è stato spostato. Il nuovo URL è https://github.com/formigarafa/robotito
Ho creato uno script (testato sul mio sistema operativo Raspbian in Raspberry Pi) in modo da poter installare facilmente Robo-TiTO su Raspberry Pi, Debian o Ubuntu Box (distribuzione del pacchetto Debian). questi sono i passaggi per ottenere il tuo Linux box telecomandabile:
Apri Shell Command o puoi chiamarlo Terminale, vai alla tua cartella home, scarica lo script di installazione tramite comando:
$ wget https://opengateway.googlecode.com/files/robotito
quindi eseguire lo script immettendo command:
$ sudo ./robotito
e quindi puoi modificare il file
credentials.rb
dalla cartella config di Robo-TiTO usando il tuo account GTalk e salvalo premendo Ctrl +X e Y . L'impostazione predefinita utilizza l'editor nano.eseguire Robo-TiTO dalla cartella Robo-TiTO tramite comando
$ cd robotito $ ./jabbershd start
Ora che questo è fatto puoi usare SSH da qualsiasi client Google Talk. Non dimenticare di aggiungere l'account Robo-TiTO GTalk al tuo account Google Talk e provalo chattando tra di voi prima di utilizzare l'account.