¿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 [email protected]:/myremotepath /mylocalpath

¿Es correcto?

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

Andrei
fuente
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.

edk
fuente
¿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 [email protected]: / 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 ...

Rodrigo Farias
fuente
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
lucidyan
fuente
¿Tiene esto algún beneficio versus usar solo -o ssh_command="ssh -J machineB"?
clemisch