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

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

我安装了 openssh-server 并使用 创建了一个密钥ssh-keygen。然后我尝试通过执行 来使用本地端口转发对其进行测试ssh -L 8080:www.nytimes.com:80 127.0.0.1。但是,此命令提供的密钥指纹不是我执行 时获得的密钥指纹ssh-keygen -l。即使我删除了 .ssh 目录,我仍然会得到相同的指纹,这不是我用 创建的指纹ssh-keygen。我的系统上还有其他密钥吗?这个密钥在哪里?我如何选择此密钥供 openssh-server 使用?

答案1

当您进行 SSH 会话时,会涉及两个不同的密钥对(每对都有一个指纹)。一个是存储在 中的用户密钥~/.ssh。用户的 SSH 密钥身份有时用作登录另一台计算机的凭证(如果您已设置基于密钥的登录)。

另一个是 SSH 服务器的密钥。这是您第一次连接到其他服务器时看到的指纹密钥。此密钥的身份用于确保您登录到您想要的 SSH 服务器。如果您使用密码,这一点很重要,因为您不想意外尝试登录攻击者的机器:攻击者会在您输入密码时获取您的密码。然后攻击者可以登录到您认为您正在登录的机器!(这称为“中间人攻击”当您登录时,SSH 服务器用来识别自己的密钥位于 中/etc/ssh/,通常命名为ssh_host_rsa_key

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

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

*加密算法有很多种。每种算法使用不同的密钥。常见的有 DSA(弱)、RSA(旧默认)和 ECDSA(新默认)。

答案2

SSH 主机密钥存储在 中/etc/ssh/,通常您不需要选择。这些密钥是在安装 openssh-server 包时生成的。

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

 

答案3

ssh-keygen不会在您的服务器上生成 SSH 指纹。该指纹由 SSH 服务器生成。ssh-keygen为您的系统创建一个公钥/私钥对,您稍后可以使用它来访问您的 SSH 服务器,而无需向服务器传输纯文本密码。

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

相关内容