[root@mexsvr2 .ssh]# pwd
/root/.ssh
[root@mexsvr2 .ssh]# cat config
Host 10.*
Hostname 10.10.%h
Host *
Hostname 10.10.10.%h
[root@mexsvr2 .ssh]# ssh 10.6
root@10.10.10.6's password:
Last login: Tue Apr 24 16:38:37 2018 from mexsvr2
[root@mexsvr6 ~]# exit
logout
Connection to 10.10.10.6 closed.
[root@mexsvr2 .ssh]# ssh 6
root@10.10.10.6's password:
Last login: Tue Apr 24 16:39:26 2018 from mexsvr2
[root@mexsvr6 ~]# exit
logout
Connection to 10.10.10.6 closed.
通过上述实践可以看到,利用%h配置好~/.ssh/config中的Host和Hostname的值,可以省却一大批局域网或规律ip的ssh自动登录配置。
注意如下内容:
Host 10.*
Hostname 10.10.%h
Host *
Hostname 10.10.10.%h
发现,上述语句将让ssh 10.6等价于ssh 10.10.10.6.
但是如果这两段顺序相反的话:
Host *
Hostname 10.10.10.%h
Host 10.*
Hostname 10.10.%h
那么ssh 10.6真正执行的将变成 ssh 10.10.10.10.6(因为第一段被匹配了所以被使用了)。
从这里可以看出 ~/.ssh/config 并不会想 nginx 会在所以匹配中找最精准的,而是按照顺序匹配的,一旦匹配到就会使用之。
所以一定要按照顺序优先写精准匹配的,越是模糊的匹配越需要写在最后。
尤其注意其中使用到了 %h 或者 %h:%p替换的,涉及到hostname的。