使用带有共享控制套接字的 SSHFS

使用带有共享控制套接字的 SSHFS

我使用共享控制套接字启动 SSH 会话,如下所示:

ssh -M -S ssh_socket -fnNTC ssh://user@host:9022

使用这个套接字我可以毫无问题地执行命令;例如:

ssh -S ssh_socket ssh://user@host:9022 -t htop

但我想通过同一个共享套接字挂载文件系统,但搞不懂语法。这将挂载文件系统,但不使用共享套接字,因此它会再次要求输入密码:

sshfs -p 9022 user@host:/path /path

有人能帮我弄清楚我想要的是否有可能吗?

答案1

有可能的。

使用-o ssh_command='ssh -S /full/path/to/ssh_socket'. 来自man 1 sshfs

-o ssh_command=CMD
执行CMD而不是ssh

sshfs placeholder:/remote/path /local/path -o ssh_command='ssh -S /full/path/to/ssh_socket'

笔记:

  • 在我的 Kubuntu 中,无论我从哪个目录运行,指定的ssh_command都会运行。这就是为什么这个答案使用,而不仅仅是。/sshfs/full/path/to/ssh_socketssh_socket
  • 如果您使用ssh -S不带-M,则某些选项无关紧要。首先,套接字很重要。它与某个主连接相关联,其中端口、用户名和主机已经固定。因此无需使用-p,您可以使用几乎任何占位符代替user@host。甚至您的第二个ssh命令也可以是ssh -S ssh_socket -t whatever htop
  • ssh://user@host:9022您使用的语法无法ssh在我的 Kubuntu 中通过 OpenSSH 运行。有效的是-p 9022 user@host

相关内容