这些是生成的密钥ssh
,它们不是我创建的。
# ls -l /etc/ssh/
total 276
-rw-r--r-- 1 root root 242153 Mar 22 2016 moduli
-rw-r--r-- 1 root root 2208 Mar 22 2016 ssh_config
-rw-r--r-- 1 root root 4360 Feb 29 2016 sshd_config
-rw-r-----. 1 root ssh_keys 227 Mar 5 2015 ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 Mar 5 2015 ssh_host_ecdsa_key.pub
-rw-r----- 1 root ssh_keys 387 Apr 8 2015 ssh_host_ed25519_key
-rw-r--r-- 1 root root 82 Apr 8 2015 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys 1679 Mar 5 2015 ssh_host_rsa_key
-rw-r--r--. 1 root root 382 Mar 5 2015 ssh_host_rsa_key.pub
拥有这些密钥的服务器是 Vagrant 实例。我有多个实例,但不幸的是每个实例都有相同的密钥。因此,我需要重新生成所有密钥以区分每个服务器。
我怎样才能重新生成这些密钥?
答案1
删除旧密钥,然后运行:
ssh-keygen -A restorecon /etc/ssh/ssh_host_*
注意:moduli
和(显然)sshd_config
不是键,不应被删除。
也可以使用以下命令逐个生成主机密钥:
for type in rsa dsa ecdsa ed25519; do
ssh-keygen -t ${type} -N "" -f /etc/ssh/ssh_host_${type}_key
done
restorecon /etc/ssh/ssh_host_*
答案2
$ sudo rm /etc/ssh/ssh_host_*
$ sudo ssh-keygen -A
该-A
标志自动生成缺失的主机密钥:
如果不存在,则生成所有默认密钥类型(rsa、ecdsa 和 ed25519)的主机密钥。主机密钥使用默认密钥文件路径、空密码、密钥类型的默认位和默认注释生成。如果还指定了 -f,则其参数将用作生成的主机密钥文件的默认路径的前缀。系统管理脚本使用它来生成新的主机密钥。
对于操作系统映像,我建议不要包含任何主机密钥(运行第一个命令),并安排第二个命令在(第一次)启动时运行。这应确保每个克隆/生成的系统都获得一组新密钥,并且它们之间不存在意外的信任关系。
答案3
您可以像这样重新生成密钥:
移走旧钥匙:
cd /etc/ssh sudo mkdir old sudo mv ssh_host_* old
生成新密钥:
sudo dpkg-reconfigure openssh-server
比较新旧密钥以确保它们不同:
sudo md5sum ssh_host_* sudo md5sum old/ssh_host_* sudo rm -rf old