VerifyHostKeyDNS
是 OpenSSH 中的一个配置选项,用于控制 SSH 客户端在连接服务器时是否通过 DNS 查询来验证服务器的公钥指纹(host key)。以下是详细说明:
功能作用
用途
当 SSH 客户端首次连接服务器时,会记录服务器的公钥指纹(存储在~/.ssh/known_hosts
)。启用VerifyHostKeyDNS
后,客户端会尝试通过 DNS 的SSHFP
记录验证该指纹是否合法。SSHFP 记录
- 一种 DNS 资源记录类型,存储服务器公钥的哈希值(支持 SHA-1/SHA-256)。
- 示例:
其中example.com IN SSHFP 1 2 abcd1234...ef5678
1
表示 RSA 算法,2
表示 SHA-256。
配置方法
在 SSH 客户端的配置文件(~/.ssh/config
)中设置:
VerifyHostKeyDNS yes
或通过命令行参数:
ssh -o "VerifyHostKeyDNS=yes" user@example.com
注意事项
依赖条件
- DNS 必须正确配置
SSHFP
记录。 - DNSSEC(DNS Security Extensions)可防止 DNS 欺骗,但非强制要求。
- DNS 必须正确配置
安全性权衡
- 优点:避免首次连接时的交互式确认(减少中间人攻击风险)。
- 缺点:若 DNS 被污染或未启用 DNSSEC,可能引入风险。
默认值
OpenSSH ≥7.0:默认为no
;建议在可信网络环境中启用。
验证步骤
检查 SSHFP 记录
使用dig
:dig example.com SSHFP
测试连接
启用调试模式查看验证过程:ssh -vvv -o "VerifyHostKeyDNS=yes" user@example.com
相关配置项
StrictHostKeyChecking yes/no/ask
:控制是否严格检查主机密钥。UpdateHostKeys yes/no/ask
:是否自动更新已知主机密钥。
如需进一步帮助,请提供具体应用场景或问题细节!
内容由零声教学AI助手提供,问题来源于学员提问