我使用共享控制套接字启动 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_socket
ssh_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
。