如何通过中间机安装远程SSHFS?隧道?


26

我想使用SSHFS挂载远程文件系统(A),但有时我具有IP地址,不允许从该IP地址进行访问。因此,我的计划是通过该网络中的另一台计算机(B)访问它。我是否需要在B上安装A,然后在本地计算机上安装B(和A)?有更好的方法吗?

更新资料

只是为了澄清过程:

首先,我做一个隧道

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

然后我挂载远程文件系统

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

这是对的吗?

完成后如何销毁隧道?


1
设置隧道的更好方法是使用ssh user @ machineB -L 2222:machineA:22 -NGNU屏幕窗口连接到B,因此您可以轻松地使用^ C杀死它
edk 2010年

Answers:


9

是的,隧道。您连接机器B,在机器A的SSHd端口上创建本地隧道(-L),然后在新创建的隧道端口上sshfslocalhost


以下命令是执行此操作的正确方法吗?ssh -f user@machineB -L 25:machineA:25 -N
安德烈(Andrei)2010年

1
是的,如果您使用sshd监听计算机A上的端口25。则只需使用sshfs -p 25 user@127.0.0.1:/ path / localpath
edk 2010年

1
啊哈,所以我需要默认的ssh设置ssh -f user@machineB -L 22:machineA:22 -N,对不对?
安德烈(Andrei)2010年

16

您可以使用选项ssh_commandof sshfs来达到目的:

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

与平常一样卸下

fusermount -u /mnt

抱歉,这晚了7年...


5
随着OpenSSH中1.1新-J选项是沿东西:sshfs的马:到/ mnt -o ssh_command = '的ssh -J MB'
辖鲁宾

0

您的连接方案: Your machine --> Host B --> Host A

我们的解决方案将使用OpenSSH 7.3中引入的Proxy Jump(代理跳转),因此您需要使用以下命令检查您的版本是否较新:

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}

最后,创建您的安装点并将添加到/ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.