SSH: túnel sin shell en el servidor ssh

63

Tengo que configurar un túnel entre dos hosts.

Para esto lo uso sshde esta manera:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

después de eso, inicio sesión en mi SSH_SERVER.

¿Cómo puedo evitar esta función? Solo tengo que configurar un túnel. No tengo que iniciar sesión en mi SSH_SERVER ...

He probado la opción -N, pero mantuvo mi shell ocupado.

Bau Miao
fuente
SSH -N -L xx: xx: xx usuario @ servidor & <- ¿lo has intentado antes?
Lawrence
Oye, tienes derecho. He intentado en otro host y la opción -N funciona. Entonces descubrí que el problema está en mi cliente ssh (no sé por qué y buscaré el motivo). ¡Muchas gracias!
Bau Miao
1
man sshmuestra cómo: ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 la opción -f background ssh y el comando remoto `` sleep 10 '' se especifica para permitir una cantidad de tiempo (10 segundos, en el ejemplo) para iniciar el servicio que se va a hacer un túnel. Si no se realizan conexiones dentro del tiempo especificado, ssh se cerrará. `` `
lionello

Respuestas:

71

Como se dijo en otras publicaciones, si no desea una solicitud en el host remoto, debe usar la -Nopción de SSH. Pero esto solo mantiene SSH ejecutándose sin tener un aviso, y el shell está ocupado.

Solo necesita poner el SSH'ing como una tarea en segundo plano con el &signo:

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

Esto lanzará el túnel ssh en segundo plano. Pero pueden aparecer algunos mensajes, especialmente cuando intentas conectarte a un puerto que no escucha (si tu servidor Apache no se inicia). Para evitar que estos mensajes aparezcan en su shell mientras hace otras cosas, puede redirigir STDOUT / STDERR al gran vacío:

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

Diviértete con SSH.

Adrien M.
fuente
17
También puede usar la opción ssh en -flugar de la &redirección io.
tkrennwa
49

-f -N es lo que buscas:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER
neu242
fuente
3
Una vez que el túnel está configurado, ¿cómo se cierra con este método?
magnetik
Encuentra @magnetik el proceso con psy killque
neu242
13
@magnetik y @ neu242 lo mejor es usar el "socket maestro" ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...para que luego puedas matar la conexión con ssh -S /tmp/file -o exit user@....(o kill). De esa manera, no hay necesidad de ps. Puede indicar que cree automáticamente ese archivo en ~ / .ssh / config.
Metal3d
1
Me refiero a "toma de control" y no a "toma principal"
Metal3d
8
Debería ser ssh -S /tmp/file-sock -O exit, no -o en.wikibooks.org/wiki/OpenSSH/Cookbook/…
fetsh