在配置了ansible的机器上启用了ControlPath配置: (这样效率会高一些)
1 2 3 4 5 6 7 8 |
# cat ~/.ssh/config Host * Compression yes ServerAliveInterval 60 ServerAliveCountMax 5 ControlMaster auto ControlPath ~/.ansible/cp/ansible-ssh-%h-%p-%r ControlPersist 8h |
然而,我还想在这个机器上使用ssh协议的git,这样不用每次都输入密码,然而,我不想使用默认的ssh key,于是在 ~/.ssh/config 中添加如下配置:
1 2 3 |
Host gitlab IdentityFile ~/.ssh/id_rsa.gitlab User git |
问题来了,如果没有Host * 的配置,git是好使的,有了Host * 的配置就不好使了,测试发现,是因为git不喜欢ControlPath, 然而,我google了一大圈,找不到unset掉ControlPath的方法,只好采用如下方式:
1 2 3 4 5 6 7 |
Host *,!gitlab Compression yes ServerAliveInterval 60 ServerAliveCountMax 5 ControlMaster auto ControlPath ~/.ansible/cp/ansible-ssh-%h-%p-%r ControlPersist 8h |
参考: