当前位置: 首页>>技术教程>>正文


SSH服务器指纹在哪里生成/存储?

,

问题描述

我安装了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中。用户的SSH密钥标识有时用作登录另一台计算机的凭据(如果已设置基于密钥的登录)。

另一个是SSH服务器的密钥。这是您第一次连接到其他服务器时看到指纹的关键。此密钥的标识用于确保您登录到您打算使用的SSH服务器。如果您使用密码这很重要,因为您不想意外尝试登录攻击者计算机:攻击者在您输入密码时会获得密码。然后攻击者可以登录到您认为登录的计算机至! (这称为“man in the middle attack”)SSH服务器在您登录时用于标识自身的密钥位于/etc/ssh/中,通常命名为ssh_host_rsa_key

实际上,您可以使用HostKey /path/to/host/key设置更改SSH服务器在/etc/ssh/sshd_config文件中查找密钥的位置。

默认情况下,ssh-keygen将为当前用户创建一个密钥,默认情况下,该密钥将存储在~/.ssh中。用户密钥和服务器密钥的格式相同;区别在于它们的位置以及/etc/ssh/sshd_config是否具有指向它们的HostKey指令。安装openssh-server软件包时,它会自动生成供服务器使用的密钥。这就是具有未知指纹的密钥来自的地方。如果要查看SSH服务器(RSA *)密钥的指纹,可以运行ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

*有不同的加密算法。每个人都使用不同的密钥。常见的有DSA(弱),RSA(旧默认)和ECDSA(新默认)。

次佳解决办法

SSH主机密钥存储在/etc/ssh/中,您通常无需选择。安装openssh-server软件包时会生成这些密钥。

您可以通过ssh-keygen -l -f /etc/ssh/ssh_host_key.pub列出密钥的指纹,但您需要为每个公钥重复此操作。

第三种解决办法

ssh-keygen不会在您的服务器上生成SSH指纹。这是由SSH服务器生成的。 ssh-keygen为您的系统创建公钥/私钥对,以后可以使用它来访问SSH服务器,而无需将plain-text密码传输到服务器。

服务器的指纹显然不会显示为您生成的公钥/私钥对的指纹,因为它们彼此分开。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2341.html,未经允许,请勿转载。