我安装了openssh-server并使用ssh-keygen创建了一个密钥。然后,我尝试使用本地端口转发来测试它,方法是执行ssh -L 8080:www.nytimes.com:80 127.0.0.1。然而,这个命令提供的密钥指纹与我执行ssh-keygen -l时得到的密钥指纹不一样。即使我删除了我的.ssh目录,我仍然得到相同的指纹,而不是我用ssh-keygen创建的那个。我的系统上还有另一个密钥吗?这个密钥在哪里?我如何选择这个密钥供openssh-server使用?
~/.ssh
中。用户的SSH密钥身份有时用作登录到另一台计算机的凭据(如果您已设置基于密钥的登录)。/etc/ssh/
中,通常命名为ssh_host_rsa_key
之类的名称。
你实际上可以在/etc/ssh/sshd_config
文件中使用HostKey /path/to/host/key
设置来更改SSH服务器查找密钥的位置。ssh-keygen
会为当前用户创建一个密钥,默认情况下,它将存储在~/.ssh
中。用户密钥和服务器密钥的格式是相同的;区别在于它们放置的位置以及/etc/ssh/sshd_config
是否有指向它们的HostKey
指令。当您安装openssh-server软件包时,它会自动生成服务器使用的密钥。这就是未知指纹的密钥的来源。如果您想查看SSH服务器(RSA*)密钥的指纹,可以运行ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
。ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
。另外,在我的安装中,ssh守护进程使用的是ECDSA密钥,而不是RSA密钥,所以实际上我需要运行的是ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
。 - John Clementsssh
连接到14.04主机时,它会显示MD5指纹。要使16.04的ssh-keygen
显示MD5指纹,您必须使用-E md5
选项。 - jarno
ssh-keygen
在您的服务器上不会生成SSH指纹。这是由SSH服务器生成的。ssh-keygen
为您的系统创建了一个公钥/私钥对,您以后可以使用该对来访问您的SSH服务器,而无需将明文密码传输到服务器。
您的服务器的指纹显然不会显示为您生成的公钥/私钥对的指纹,因为它们彼此独立。
/etc/ssh/ssh_host_*_key.pub
- user677955