我可以从远程指纹找到本地 ssh 私钥吗?

我可以从远程指纹找到本地 ssh 私钥吗?

可能我忽略了一些显而易见的东西,但是在厌倦了 ssh-agent 的 5 个密钥限制后,我开始寻找更好的 ssh 密钥管理方法。

如果我使用 ssh-keygen -t rsa 创建一个新的 ssh 密钥对,那么我可以使用 ssh-keygen -lf 获取私钥和​​公钥的指纹,并且它们都报告相同的指纹。

然后我天真的期望是做一些类似 ssh-keyscan 的事情来获取该主机上的远程公钥指纹并将该指纹与我的一个私钥进行匹配,然后使用该私钥启动 ssh 连接。

显然,我使用 ssh-keyscan 获得的指纹甚至与本地密钥的指纹不相似。

有没有什么办法可以解决这个困境?

答案1

ssh-keyscan命令用于扫描主机密钥(/etc/ssh/ssh_host_*.pub),而不是用于用户身份验证/授权的现有密钥。

您需要连接到远程主机并检查各种 authorized_keys 文件。复杂的是,authorized_keys 文件中可以包含许多密钥,因此您需要进行一些操作来提取单个密钥并打印它们。

还有另一种关于 serverfault 的问答,以及一些好的方法

答案2

我认为我可以通过简单地先验定义在我的主机上使用哪个密钥对来避免你的困境~/.ssh/config

Host www
 HostName www.example.com
 IdentityFile ~/.ssh/key1
Host dev
 HostName dev.example.org
 IdentityFile ~/.ssh/key2

相关内容