SSH: tunnel senza shell sul server SSH


63

Devo allestire un tunnel tra due host.

Per questo utilizzo sshin questo modo:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

successivamente accedo al mio SSH_SERVER.

Come posso evitare questa funzione ?! Devo solo installare un tunnel. Non devo accedere al mio SSH_SERVER ...

Ho provato l'opzione -N, ma ha tenuto occupata la mia shell.


SSH -N -L xx: xx: xx user @ server & <- l'hai già provato?
Lawrence,

Ehi, hai ragione. Ho provato su un altro host e l'opzione -N funziona. Quindi ho scoperto che il problema è sul mio client SSH (non so perché, e cercherò il motivo). Molte grazie!
Bau Miao,

1
man sshmostra come: ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 L'opzione -f backgrounds ssh e il comando remoto `` sleep 10 '' sono specificati per consentire un periodo di tempo (10 secondi, nell'esempio) per avviare il servizio che deve essere sintonizzato. Se non viene effettuata alcuna connessione entro il tempo specificato, ssh uscirà. ``
lionello,

Risposte:


71

Come detto in altri post, se non si desidera un prompt sull'host remoto, è necessario utilizzare l' -Nopzione di SSH. Ma questo mantiene SSH in esecuzione senza un prompt e la shell è occupata.

Devi solo mettere SSH come attività in background con il &segno:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server &

Questo avvierà il tunneling ssh in background. Ma potrebbero apparire alcuni messaggi, specialmente quando si tenta di connettersi a una porta non in ascolto (se il server Apache non viene avviato). Per evitare che questi messaggi compaiano nella tua shell mentre fai altre cose, puoi reindirizzare STDOUT / STDERR al grande vuoto:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server >/dev/null 2>&1 & 

Divertiti con SSH.


17
Puoi anche usare l'opzione ssh -finvece di &e io il reindirizzamento.
tkrennwa,

49

-f -N è quello che stai cercando:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

3
Una volta impostato il tunnel, come lo si chiude con questo metodo?
magnetik,

@magnetik Trovare il processo con pse killche
neu242

13
@magnetik e @ neu242 meglio è usare "socket master" in ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...modo da poter uccidere la connessione in seguito con ssh -S /tmp/file -o exit user@....(o uccidere). In questo modo, non è necessario ps. Puoi dire di creare automaticamente quel file in ~ / .ssh / config.
Metal3d,

1
Intendo "presa di controllo" e non "presa principale"
Metal3d,

8
Dovrebbe essere ssh -S /tmp/file-sock -O exit, non -o en.wikibooks.org/wiki/OpenSSH/Cookbook/…
fetsh
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.