该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 次 |
| 最近记录: |