对于在两台 Linux 计算机之间传输文件,我总是觉得使用图形文件管理器(例如 Nautilus)更舒服,它提供了通过 SSH 连接到远程计算机的选项。然而今天我需要将文件传输到一台无法直接访问的机器上——我需要首先通过 SSH 连接到某个服务器,然后再通过 SSH 连接到我的最终目的地。是否还有办法在这里进行 GUI 友好的文件传输,或者这次我应该回退到旧的命令行 scp ?
答案1
假设中间主机允许端口转发,您可以使用命令行完成一半的工作,并像往常一样以图形方式完成:
sshfs -o ssh_command='ssh -J firstuser@firsthost' finaluser@finalhost:directory localdirectory
或者实际上,由于(与for-o ProxyJump
相同) 直接被(然后将其提供给后端)接受,因此可以将其重写为:-J
ssh
sshfs
ssh
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。我无法测试这个。