Linux重新生成Host key

1.何为Host key

Host key 是ssh服务的一个部分,在服务器启用ssh服务后,会通过非对称算法随机自动生成一组Host key,由于key是随机产生的,所以其与其他主机重复的可能性微乎其微。因此,该key一般用于鉴别对方ssh主机的身份。

比如,当主机A在首次使用ssh方式连接主机B的时候,会提示是否信任B主机的key。如果选择yes,则说明B主机的身份受到A信任。此时B主机的key会加入到A主机的~/.ssh/known_hosts文件中,之后再次连接便不再询问。当B主机的key发生了改变后A再次发起连接,会弹出相应提示,再次询问信任关系。

2. 为何要重新生成Host key

理论上来讲,通过新装系统产生的ssh host key是随机产生的,重复的可能性微乎其微,但是如果复制虚拟机、克隆虚拟机、使用模板新建虚拟机而未进行初始化的情况下,新老机器的host key将会一致,这个时候很有可能会存在一定的安全风险。此时则需要重新生成host key

3. 如何重新生成Host key

重新生成host key的方法比较简单,首先需要知道,host key保存于/etc/ssh/下,名称为/etc/ssh/ssh_host_* 。 要重新生成host key需要将这些文件先删除掉。

rm -v /etc/ssh/ssh_host_*

Debian或ubuntu使用如下命令,重新生成相关key

sudo dpkg-reconfigure openssh-server

之后可以通过重启sshd服务或者重启机器的方式使key生效

sudo systemctl restart sshd

如果是CentOS/Fedora/Redhat的话,直接重启服务即可自动生成新key

systemctl restart sshd