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

bsa*_*mek 50 ssh

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

Aze*_*ale 67

当您进行 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(新默认)。

  • 当我第一次从 14.04 通过 `ssh` 连接到主机时,它显示 MD5 指纹。要使 16.04 的 `ssh-keygen` 显示 MD5 指纹,您必须使用 `-E md5` 选项。 (5认同)
  • 谢谢你。一个注意事项:如果您将 ssh-keygen 指向公钥,则不需要“sudo”。即:`ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub`。此外,对于我的安装,ssh 守护程序使用的是 ECDSA 密钥,而不是 RSA 密钥,所以实际上我必须运行的是`ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub`。 (4认同)
  • “设置 ssh 指纹”的谷歌结果,即使这些术语在技术上是不正确的,但出奇的糟糕。很高兴我在他们中间找到了这个。 (2认同)

ajm*_*tch 17

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

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

 


Tho*_*ard 7

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

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

  • 请注意,您应该能够为您的服务器生成 ssh 密钥(与您所说的相反),但您只需要将它们放在正确的位置,以便它们用于该目的。 (4认同)