¿Cómo montar SSHFS remoto a través de una máquina intermedia? Túneles


26

Me gustaría montar un sistema de archivos remoto (A) usando SSHFS, pero a veces tengo una dirección IP, cuyo acceso no está permitido. Entonces, mi plan es acceder a través de otra máquina (B) en esa red. ¿Necesito montar A en B y luego montar B (y A) en mi computadora local? Hay una mejor manera de hacerlo?

Actualizar

Solo para aclarar el procedimiento:

Primero hago un túnel

ssh -f user@machineB -L MYPORT:machineA:22 -N

Y luego monte el sistema de archivos remoto

sshfs -p MYPORT user@127.0.0.1:/myremotepath /mylocalpath

¿Es correcto?

¿Cómo destruyo el túnel cuando termino?


1
La mejor manera de configurar el túnel es tener una conexión a B desde la ventana de pantalla de GNU usando ssh user @ machineB -L 2222: machineA: 22 -N para que pueda matarlo fácilmente con ^ C
edk

Respuestas:


9

Sí, túneles. Conecta la máquina B, crea un túnel local (-L) al puerto SSHd de la máquina A y luego sshfs a localhost al puerto del túnel recién creado.


¿Es el siguiente comando la forma correcta de hacerlo? ssh -f user@machineB -L 25:machineA:25 -N
Andrei,

1
sí, si tiene sshd escuchando el puerto 25 en la máquina A. entonces solo tendrá que sshfs -p 25 user@127.0.0.1: / path / localpath
edk

1
Ajá, entonces para la configuración ssh predeterminada que necesito ssh -f user@machineB -L 22:machineA:22 -N, ¿verdad?
Andrei

16

Puedes usar la opción ssh_commandde sshfshacer el truco:

sshfs ma: /mnt -o ssh_command='ssh -t mb ssh'

Desmontar con lo habitual

fusermount -u /mnt

Lo siento, esto lleva 7 años de retraso ...


55
Con la nueva opción -J en Openssh 1.1 es algo así como: sshfs ma: / mnt -o ssh_command = 'ssh -J mb'
Ohad Rubin

0

Su esquema de conexión: Your machine --> Host B --> Host A

Nuestra solución utilizará Proxy Jump, presentada en OpenSSH 7.3 , por lo que deberá verificar que su versión sea más nueva con:

ssh -V

Entonces necesita configurar correctamente su ~ / .ssh / config. Por ejemplo, si machineB está disponible con una contraseña de inicio de sesión desde machineA :

machineB
    HostName {machineB ip address}
    User {machineB username}
    Port {machineB port-number}
    IdentityFile ~/.ssh/{machineB private ssh key}

machineA
    ProxyJump machineB
    Hostname {machineA ip address, maybe in local network}
    User {machineA username}
    Port {machineA port-number}

Finalmente, cree su punto de montaje y agregue una línea a / etc / fstab

machineB:{machineB mount path}  {your local mountpoint}  fuse.sshfs delay_connect,_netdev,user,idmap=user,follow_symlinks,identityfile={local path to machineB private key},default_permissions,uid={local user uid},gid={local user gid} 0 0

¿Tiene esto algún beneficio versus usar solo -o ssh_command="ssh -J machineB"?
clemisch
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.