我安装了 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_config有HostKey指向它们的指令。当您安装 openssh-server 软件包时,它会自动生成供服务器使用的密钥。这就是带有未知指纹的密钥的来源。如果您想查看 SSH 服务器 (RSA*) 密钥的指纹,您可以运行ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub.
*有不同的加密算法。每个人都使用不同的密钥。常见的有 DSA(弱)、RSA(旧默认)和 ECDSA(新默认)。
ajm*_*tch 17
SSH 主机密钥存储在 中/etc/ssh/,您通常不需要选择。这些密钥是在安装 openssh-server 包时生成的。
您可以列出密钥的指纹,ssh-keygen -l -f /etc/ssh/ssh_host_key.pub但您需要为每个公钥重复此操作。
ssh-keygen不会在您的服务器上生成 SSH 指纹。那是由 SSH 服务器生成的。ssh-keygen为您的系统创建一个公钥/私钥对,您以后可以使用它来访问您的 SSH 服务器,而无需将纯文本密码传输到服务器。
您服务器的指纹显然不会显示为您生成的公钥/私钥对的指纹,因为它们彼此分开。