SSH de vuelta a la máquina local desde una sesión SSH remota

12

Estoy tratando de hacer algo bastante inusual (para mí de todos modos) con SSH y no puedo hacer que funcione, espero que puedan ayudar.

Quiero establecer una conexión a un servidor remoto desde mi Mac usando SSH. Hasta aquí todo bien. Ahora, lo complicado es que, con la conexión al servidor remoto establecida, quiero iniciar una conexión desde el servidor remoto VOLVER a la máquina local. Lo se, loco. Básicamente, necesito saltar a través de estos aros para poder navegar por el servidor remoto y luego enviar la información del archivo de regreso a mi máquina local para que una aplicación en la máquina local pueda manejarlo. ¡Ojalá eso tenga sentido!

Por el momento, si vuelvo a SSH a la máquina local una vez que inicie sesión en el servidor remoto, el terminal simplemente se quedará allí zumbando, sin errores incluso con -v.

Estoy tratando de descubrir a dónde debería llamar mirando la salida de la variable $ SSH_CLIENT, pero estoy en una conexión a Internet estándar (sin dirección IP estática) Creo que esto podría ser lo que está causando el problema.

Cosas que he establecido: estoy en una Mac (OS X 10.6.4) y tengo habilitado el inicio de sesión remoto en las preferencias / uso compartido del sistema. Si intento conectar SSH a otro servidor (no a mi máquina local) desde mi servidor remoto, puedo conectarme sin problemas.

Entonces, los hechos anteriores me hacen pensar que estoy claro con respecto a los firewalls, etc. en las máquinas locales y remotas.

Estoy seguro de que me estoy perdiendo algo bastante obvio aquí, pero por mi vida no puedo manejarlo.

Cualquier ayuda, enlaces o empujones generales en la dirección correcta sería muy apreciada.

i0n
fuente
Puede explorar el servidor remoto con ssh. ¿O intentas usar afs? ¿Qué tal portforwardings y / o sftp / scp?
Andreas Rehm el
Hola. Sí, puedo conectarme y explorar la estructura de directorios del servidor remoto sin problemas. No estoy seguro de lo que quieres decir, lo siento. Básicamente, el plan es este: quiero ingresar a mi servidor Linux remoto desde mi Mac local, buscar un archivo y luego poder volver a conectarlo a la conexión establecida (o generar una nueva conexión basada en la ya establecida) para la máquina local donde una aplicación Mac leerá / editará los datos antes de enviarlos nuevamente al servidor. No me preocupa especialmente cómo logro esto en términos de involucrar otros protocolos.
i0n

Respuestas:

9

Si cuando te vuelves a conectar a tu local te permite iniciar sesión antes de colgar, entonces esta no es la respuesta. Si no llega tan lejos, es probable que no esté volviendo a su Mac (ya sea que no llegue a ninguna parte o golpee SSH en una puerta de enlace). Pruebe con un túnel inverso (requerirá que GatewayPorts esté configurado como Activado en sshd_config en su servidor, pero creo que esto es predeterminado):
you@yourMac$ ssh -R 2000:localhost:22 user@remoteserver
Eso debería permitirle conectarse al servidor de manera normal, pero también abrir un túnel para que pueda volver a conectarse puerto 2000 (cualquier puerto superior a 1024 debería funcionar), entoncesyou@yourserver$ ssh -p2000 user@localhost

EDITAR: Se cambió el nombre de host a localhost

James L
fuente
2
Debe
1
Esto fue útil, ¡casi me lleva a donde quiero estar! Puedo establecer la conexión con el túnel inverso como se indica arriba y luego volver a ssh a mi Mac local usando ssh -p 2000 i0n @ localhost. Entonces, ¿cómo puedo lograr esto sin saber de antemano que necesito esta funcionalidad? En otras palabras, con una conexión ssh existente y estándar. es posible?
i0n
Gracias b0fh, estaba camino a la cama cuando escribí que =) i0n - instintivamente quiero decir que no puedes modificar una conexión existente para hacer esto, pero PuTTY puede hacerlo, así que debe haber una manera. Siempre puede enviar una nueva conexión SSH con un túnel cuando necesite volver a canalizar, pero supongo que esto se hará mediante programación, por lo que podría no ser una opción. Busque Esperar: si algún idioma puede prepararse a través de SSH, será eso.
James L
2

¿Se puede acceder a su máquina local desde el servidor? ¿Puedes hacer ping? Lo pregunto porque lo que está haciendo debería funcionar si su máquina es accesible. Su servidor está en internet o en LAN, ¿la misma subred?

De todos modos, si solo necesita editar un archivo, ¿por qué no simplemente usa scp para copiar el archivo en su máquina local? Puede usar ssh para buscar el archivo en el servidor remoto y cuando tenga su ruta, ingrese en su máquina local (en otro terminal):

scp user@server:/path/to/file/on/server /local/path/to/save/file

Para volver a colocar el archivo, scp vuelve a cambiar las rutas.

Obs: no necesita la conexión ssh inicial para usar scp, creará una nueva

Esto anterior es si necesita acceder a él en la terminal. En Linux (y ciertamente en Mac, pero no sé cómo hacerlo), puede montar una ubicación remota ssh en Redes y usar la conexión como usa un disco local (esto es sftp y la conexión tiene la forma: sftp://user@server:/path/to/mounty supongo que esto es lo que necesita en lugar de una conexión de terminal remota para que pueda editar el archivo directamente con la aplicación Mac.

Laurent
fuente
1

También es posible que desee echar un vistazo a sshfs(necesita MacFuse para esto). Esto le permite montar directorios en la máquina remota y acceder a ellos al igual que las carpetas normales en su máquina. Además de eso, aún puede sshingresar a la máquina y crear / buscar los archivos que necesita. Transferirlos sería tan fácil como transferir archivos locales.

Bran el bendito
fuente