该ControlMaster
功能ssh
允许对多个命令使用相同的通道ssh
,请参见如何维护开放的 ssh 连接并从 shell 脚本中使用它?
为了使用ControlMaster
,我将这些行添加到~/.ssh/config
:
Host example.com
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 5m
Run Code Online (Sandbox Code Playgroud)
当我运行时ssh example.com
,出现以下错误:
$ ssh example.com
bind: No such file or directory
unix_listener: cannot bind to path: /home/peter/.ssh/sockets/peter@example.com-22.O2cv7vtsgMAFCav7
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我可以运行mkdir ~/.ssh/sockets
:
$ mkdir ~/.ssh/sockets
$ ll ~/.ssh/sockets
total 8
drwxrwxr-x 2 peter peter 4096 Dec 28 17:51 ./
drwx------ 3 peter peter 4096 Dec 28 17:51 ../
Run Code Online (Sandbox Code Playgroud)
可以看到,该目录~/.ssh/sockets
有权限rwxrwxr-w
。应该有什么权限~/.ssh/sockets
?甚至应该sockets
在~/.ssh
?
您可以将sockets
目录放在您喜欢的任何位置(只要您有适当的权限在那里写入),但在.ssh
我看来,将其放在里面似乎是更明智的想法(除了一些非常罕见的特定情况,例如我曾经遇到的情况:路径名太长)
由于.ssh
应该已经是类似 的东西drwx------
, 的权利.ssh/sockets
可能相同或更自由,因此这不会产生任何影响。
但我不认为这是你的问题。您的错误信息与您的配置文件不一致。配置文件@
中有一个ControlPath
(这是可以的),但在错误消息中你没有。
测试时,请确保首先终止ssh
给定主机的所有正在运行的实例,因为某些实例可能会根据您的配置持续存在,然后如果您更改它,您可能无法获得预期的行为。
PS:example.com
当您需要虚拟主机名用于文档目的时,请使用
归档时间: |
|
查看次数: |
8406 次 |
最近记录: |