Làm cách nào để gắn SSHFS từ xa qua máy trung gian? Đường hầm?


26

Tôi muốn gắn kết một hệ thống tệp từ xa (A) bằng SSHFS, nhưng đôi khi tôi có địa chỉ IP, quyền truy cập không được phép. Vì vậy, kế hoạch của tôi là truy cập nó thông qua một máy (B) khác trong mạng đó. Tôi có cần phải gắn A trên B và sau đó để gắn B (và A) trên máy tính cục bộ của mình không? Có cách nào tốt hơn để làm điều đó?

Cập nhật

Chỉ cần làm rõ thủ tục:

Đầu tiên, tôi làm một đường hầm

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

Và sau đó tôi gắn hệ thống tập tin từ xa

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

Nó có đúng không?

Làm thế nào để tôi phá hủy đường hầm khi tôi hoàn thành?


1
Cách tốt hơn để thiết lập đường hầm là kết nối với B từ cửa sổ màn hình GNU bằng ssh user @ machineB -L 2222: machineA: 22 -N để bạn có thể dễ dàng tiêu diệt nó với ^ C
edk

Câu trả lời:


9

yeah đường hầm. Bạn kết nối máy B, tạo đường hầm cục bộ (-L) với cổng SSHd của máy A sau đó sshfs đến localhost với cổng của đường hầm mới được tạo.


Là lệnh sau đây là cách đúng đắn để làm điều đó? ssh -f user@machineB -L 25:machineA:25 -N
Andrei

1
có nếu bạn có sshd nghe cổng 25 trên máy A. thì bạn sẽ chỉ phải sshfs -p 25 user@127.0.0.1: / path / localpath
edk

1
Aha, vậy để thiết lập ssh mặc định tôi cần ssh -f user@machineB -L 22:machineA:22 -N, phải không?
Andrei

16

Bạn có thể sử dụng tùy chọn ssh_commandcủa sshfsđể làm các trick:

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

Không theo thông lệ

fusermount -u /mnt

Xin lỗi vì điều này đã trễ 7 năm ...


5
Với tùy chọn -J mới trong Openssh 1.1, đó là một thứ gì đó cùng: sshfs ma: / mnt -o ssh_command = 'ssh -J mb'
Ohad Rubin

0

Sơ đồ kết nối của bạn: Your machine --> Host B --> Host A

Giải pháp của chúng tôi sẽ sử dụng Proxy Jump, được giới thiệu trong OpenSSH 7.3 , vì vậy bạn sẽ cần kiểm tra xem phiên bản của bạn có mới hơn không:

ssh -V

Sau đó, bạn cần định cấu hình đúng ~ / .ssh / config. Ví dụ: nếu machineB khả dụng với mật khẩu đăng nhập từ 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}

Cuối cùng, tạo mountpoint của bạn và thêm dòng vào / 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

Điều này có bất kỳ lợi ích so với chỉ sử dụng -o ssh_command="ssh -J machineB"?
clemisch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.