Bagaimana me-mount SSHFS jarak jauh melalui mesin perantara? Tunneling?

25

Saya ingin memasang sistem file jarak jauh (A) menggunakan SSHFS, tetapi kadang-kadang saya memiliki alamat IP, akses yang tidak diizinkan. Jadi rencana saya adalah mengaksesnya melalui komputer lain (B) di jaringan itu. Apakah saya perlu memasang A di B dan kemudian memasang B (dan A) di komputer lokal saya? Apakah ada cara yang lebih baik untuk melakukannya?

Memperbarui

Hanya untuk memperjelas prosedur:

Pertama, saya membuat terowongan

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

Dan kemudian saya memasang sistem file jarak jauh

sshfs -p MYPORT [email protected]:/myremotepath /mylocalpath

Apakah itu benar?

Bagaimana saya menghancurkan terowongan ketika saya selesai?

Andrei
sumber
1
cara yang lebih baik untuk mengatur terowongan adalah memiliki koneksi ke B dari jendela layar GNU menggunakan ssh user @ machineB -L 2222: machineA: 22 -N sehingga Anda dapat dengan mudah membunuhnya dengan ^ C
edk

Jawaban:

9

ya tunneling. Anda menghubungkan mesin B, membuat terowongan lokal (-L) ke port SSHd mesin A lalu sshfs ke localhost ke port terowongan yang baru dibuat.

edk
sumber
Apakah perintah berikut ini cara yang tepat untuk melakukan itu? ssh -f user@machineB -L 25:machineA:25 -N
Andrei
1
ya jika Anda memiliki sshd mendengarkan port 25 pada mesin A. maka Anda hanya perlu sshfs -p 25 [email protected]: / path / localpath
edk
1
Aha, jadi untuk pengaturan ssh standar yang saya butuhkan ssh -f user@machineB -L 22:machineA:22 -N, kan?
Andrei 8-10
15

Anda dapat menggunakan opsi ssh_commanddari sshfsuntuk melakukan trik:

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

Lepas dari yang biasa

fusermount -u /mnt

Maaf ini terlambat 7 tahun ...

Rodrigo Farias
sumber
5
Dengan opsi -J baru di Openssh 1.1, itu adalah sesuatu: sshfs ma: / mnt -o ssh_command = 'ssh -J mb'
Ohad Rubin
0

Skema koneksi Anda: Your machine --> Host B --> Host A

Solusi kami akan menggunakan Proxy Jump, yang diperkenalkan di OpenSSH 7.3 , jadi Anda perlu memeriksa apakah versi Anda lebih baru dengan:

ssh -V

Maka Anda perlu mengkonfigurasi dengan benar ~ / .ssh / config Anda. Misalnya, jika machineB tersedia dengan kata sandi login dari 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}

Terakhir, buat mountpoint Anda dan tambahkan baris ke / 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
sumber
Apakah ini memiliki manfaat vs hanya menggunakan -o ssh_command="ssh -J machineB"?
clemisch