有没有办法将 sshfs 用于机器“两次跳转”?

有没有办法将 sshfs 用于机器“两次跳转”?

对于在两台 Linux 计算机之间传输文件,我总是觉得使用图形文件管理器(例如 Nautilus)更舒服,它提供了通过 SSH 连接到远程计算机的选项。然而今天我需要将文件传输到一台无法直接访问的机器上——我需要首先通过 SSH 连接到某个服务器,然后再通过 SSH 连接到我的最终目的地。是否还有办法在这里进行 GUI 友好的文件传输,或者这次我应该回退到旧的命令行 scp ?

答案1

假设中间主机允许端口转发,您可以使用命令行完成一半的工作,并像往常一样以图形方式完成:

sshfs -o ssh_command='ssh -J firstuser@firsthost' finaluser@finalhost:directory localdirectory

或者实际上,由于(与for-o ProxyJump相同) 直接被(然后将其提供给后端)接受,因此可以将其重写为:-Jsshsshfsssh

sshfs -o ProxyJump=firstuser@firsthost finaluser@finalhost:directory localdirectory

这将指示 sshfs 运行其 ssh 后端(本身最终运行 sftp 子系统),并附加一个ProxyJump选项,它本身会将 SSH 连接透明地转发到目标。

这相当于添加代替$HOME/.ssh/config

Host finalhost
    ProxyJump firstuser@firsthost

然后运行sshfs finaluser@finalhost:directory localdirectory​​,或者您也可以将以上两行放入一个文件中,并使用此文件-F的选项。sshfs

现在您的目录localdirectory可以与 Nautilus 或任何其他工具(无论是否有 GUI)一起使用(但通常仅限于像往常一样运行的用户sshfs)。

很有可能,有了这个选项,$HOME/.ssh/config您的 GUI 工具就可以像往常一样透明地工作来挂载目录,从而不再需要 CLI。我无法测试这个。

相关内容