我刚开始使用Ansible,我遇到了配置文件的一些问题。
最初,我无法ping主机,因为我的ansible套接字路径文件太长了。我通过引用Ansible: SSH Error: unix_listener: too long for Unix domain socket更改了此内容,并将我的路径更改为control_path=~/%%h‐%%r
。
这些转义序列(%%h and %%r
)是什么?有没有可用的文件?有没有办法让我的路径更小?是否有IP地址的转义序列?
谢谢!
答案 0 :(得分:0)
这与Ansible并无关系。控制路径是SSH存储其多路径会话套接字的地方。
http://man.openbsd.org/ssh_config.5
<强>了ControlPath 强>
指定用于连接共享的控制套接字的路径,如上面的ControlMaster部分所述,或者字符串“none”以禁用连接共享。在路径中,'%L'将被本地主机名的第一个组件替换,'%l'将被本地主机名(包括任何域名)替换,'%h'将被目标替换主机名,'%n'将替换为命令行上指定的原始目标主机名,'%p'表示目标端口,'%r'表示远程登录用户名,'%u'表示用户名和'% i'由运行ssh(1)的用户的数字用户ID(uid)和'%C'连接的散列:%l%h%p%r。建议用于机会性连接共享的任何ControlPath至少包括%h,%p和%r(或者替代%C),并放置在其他用户无法写入的目录中。这可确保唯一标识共享连接。
因此,主机IP没有占位符。缩短路径总是妥协。 ~/%%h‐%%r
已经是最不可能的解决方案。如果您可以保证不会使用其他远程用户连接到主机,则可以安全地删除%r
并仅使用%h
。
如果问题是您的主机名太长,可能在.ssh / config中创建别名是一种解决方案吗?
host short-name
hostname very-long-name-that-makes-control-path-location-exceed-the-possible-length-limitation
%n
然后应该引用可以代替short-name
的{{1}}。