当我使用 IPv6 连接到 CentOS 7 主机时,我的 ssh 客户端总是添加<IPv6 host addr>%2
到,known_hosts
即使该主机的主机密钥(带有主机的 IPv6 地址)已经存在于known_hosts
.
代表什么%2
?我正在使用来自 CentOS 7 的未经修改的 OpenSSH,它是版本 6.6.1p1-25,版本 25.el7_2。
更新:评论提到名称解析是一个可能的问题。事实上,我在客户端机器上使用 systemd-resolved 。当我resolved
从/etc/nsswitch.conf
(hosts
选项)中删除时,问题不再发生。这是与systemd-resolved-219-19.el7_2.7.x86_64
)。
更新(2017 年 2 月):我刚刚注意到systemd 解决的错误 4465,所以我注意到的行为是/只是一个错误,将在更高版本的 systemd 中修复。
不同类别的 IPv6 地址具有不同的范围。您将遇到范围主机(例如
::1
)、链接(例如fe80::200:5eff:fe00:5342
)、全局(例如2001:db8::1
)的地址。当在具有多个链接的主机上使用具有范围链接的地址时,该
%
符号用于指示在哪个链接上使用该地址。所有以 开头的地址
fe80:
都在链接本地范围内,并且可能需要接口规范。接口可以通过其名称或编号来指定。例如,在我输入的计算机上eth0
是 interface number2
,所以fe80::200:5eff:fe00:5342%2
和fe80::200:5eff:fe00:5342%eth0
是等价的。fe80::200:5eff:fe00:5342
任何一种表示法都将指示我的eth0
接口连接到的网络上具有链接本地地址的主机。