วิธีการเมาท์ SSHFS ระยะไกลผ่านเครื่องระดับกลาง Tunneling?


26

ฉันต้องการติดตั้งระบบไฟล์ระยะไกล (A) โดยใช้ SSHFS แต่บางครั้งฉันมีที่อยู่ IP การเข้าถึงที่ไม่ได้รับอนุญาต ดังนั้นแผนของฉันคือเข้าถึงผ่านเครื่องอื่น (B) ในเครือข่ายนั้น ฉันจำเป็นต้องเมานต์ A บน B หรือไม่และเพื่อเมานต์ B (และ A) บนเครื่องคอมพิวเตอร์ของฉัน มีวิธีที่ดีกว่าที่จะทำหรือไม่

ปรับปรุง

เพียงชี้แจงขั้นตอน:

ก่อนอื่นฉันสร้างอุโมงค์

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

แล้วฉันจะเมานต์ระบบไฟล์ระยะไกล

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

ถูกต้องหรือไม่

ฉันจะทำลายอุโมงค์ได้อย่างไรเมื่อฉันเสร็จ


1
วิธีที่ดีกว่าในการตั้งค่าอุโมงค์คือการเชื่อมต่อกับ B จากหน้าจอ GNUโดยใช้ssh user @ machineB -L 2222: machineA: 22 -Nดังนั้นคุณสามารถฆ่ามันได้อย่างง่ายดายด้วย ^ C
edk

คำตอบ:


9

ใช่อุโมงค์ คุณเชื่อมต่อเครื่อง B สร้างโลคัลอุโมงค์ (-L) กับพอร์ต SSHd ของเครื่อง A จากนั้นsshfsไปยังlocalhostกับพอร์ตของอุโมงค์ที่สร้างขึ้นใหม่


คำสั่งต่อไปนี้เป็นวิธีที่ถูกต้องหรือไม่ ssh -f user@machineB -L 25:machineA:25 -N
Andrei

1
ใช่ถ้าคุณมี sshd กำลังฟังพอร์ต 25 บนเครื่อง A. คุณจะต้องsshfs -p 25 user@127.0.0.1: / path / localpath
edk

1
อ่าดังนั้นฉันต้องตั้งค่าเริ่มต้น ssh ssh -f user@machineB -L 22:machineA:22 -Nใช่มั้ย
Andrei

16

คุณสามารถใช้ตัวเลือกssh_commandในsshfsการทำเคล็ดลับ:

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

ถอนติดตั้งด้วยตามปกติ

fusermount -u /mnt

ขออภัยนี่สาย 7 ปี ...


5
ด้วยตัวเลือกใหม่ -J ใน Openssh 1.1 มันเป็นอะไรที่พร้อม: sshfs ma: / mnt -o ssh_command = 'ssh -J mb'
Ohad Rubin

0

รูปแบบการเชื่อมต่อของคุณ: Your machine --> Host B --> Host A

โซลูชันของเราจะใช้ Proxy Jump ซึ่งเปิดตัวในOpenSSH 7.3ดังนั้นคุณจะต้องตรวจสอบว่าเวอร์ชั่นของคุณใหม่กว่าด้วย:

ssh -V

จากนั้นคุณต้องกำหนดค่า ~ / .ssh / config ของคุณให้ถูกต้อง ตัวอย่างเช่นหากmachineBพร้อมใช้งานด้วยการเข้าสู่ระบบรหัสผ่านจาก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}

ในที่สุดสร้าง Mountpoint ของคุณและเพิ่มบรรทัดไปยัง / 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

สิ่งนี้มีประโยชน์ใด ๆ เมื่อเทียบกับการใช้เท่านั้น-o ssh_command="ssh -J machineB"หรือไม่
Clemisch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.