CentOS 7 Host Key管理指南
什么是Host Key?
Host Key是SSH连接到远程服务器时,用于验证服务器身份的一个密钥,在第一次连接到远程服务器时,SSH客户端会将服务器的Host Key存储在本地~/.ssh/known_hosts文件中,如果再次连接到同一服务器,SSH客户端会检查known_hosts文件中的Host Key是否与服务器提供的Host Key匹配,从而确保连接的安全性。
CentOS 7中Host Key的生成与存储
生成Host Key
在CentOS 7系统中,默认情况下SSH服务会自动生成Host Key,如果需要手动生成,可以使用以下命令:
ssh-keygen -t rsa -b 4096
上述命令会生成一个4096位的RSA密钥对,包括公钥和私钥,公钥存储在~/.ssh/id_rsa.pub文件中,私钥存储在~/.ssh/id_rsa文件中。
存储Host Key
生成的Host Key会存储在~/.ssh/known_hosts文件中,该文件默认为隐藏文件,需要使用ls -a命令才能查看。
CentOS 7中Host Key的查看与删除
查看Host Key
要查看已存储的Host Key,可以使用以下命令:
cat ~/.ssh/known_hosts
删除Host Key
如果需要删除某个Host Key,可以使用以下命令:
ssh-keygen -R [主机名或IP地址]
删除名为example.com的Host Key:
ssh-keygen -R example.com
CentOS 7中Host Key的备份与恢复
备份Host Key
为了防止数据丢失,可以将known_hosts文件备份到其他位置:
cp ~/.ssh/known_hosts /path/to/backup/known_hosts_backup
恢复Host Key
如果备份的known_hosts文件丢失,可以从备份中恢复:
cp /path/to/backup/known_hosts_backup ~/.ssh/known_hosts
FAQs
Q1:为什么我的SSH连接会提示“Host key verification failed”?
A1:这通常是因为SSH客户端无法验证服务器的Host Key,可能是以下原因:
- known_hosts文件损坏或丢失。
- 服务器Host Key已更改。
- known_hosts文件中存储的Host Key与服务器提供的Host Key不匹配。
解决方法:
- 检查known_hosts文件是否损坏或丢失,并尝试恢复备份。
- 确认服务器Host Key未更改,或手动添加正确的Host Key到known_hosts文件。
- 如果服务器Host Key已更改,需要手动更新known_hosts文件中的Host Key。
Q2:如何防止SSH连接时提示Host Key?
A2:为了防止SSH连接时提示Host Key,可以在SSH客户端配置文件(~/.ssh/config)中设置StrictHostKeyChecking参数为no:
StrictHostKeyChecking no
关闭Host Key验证会降低连接的安全性,因此建议在了解风险的情况下使用。

