我在我的机器上生成了一个 SSH 密钥对,而其他方拥有我的公钥。我有没有办法向对方证明我拥有相应的私钥?当然这是可能的,因为它是在使用密钥建立 SSH 连接时发生的。我想问是否可以使用现有工具仅执行 SSH 身份验证,而不提供 shell 访问权限。
答案1
是的,这是可能的。最新版本的 OpenSSH 支持数据签名。您可以按以下方式执行此操作:
- 另一方(验证者)以文件形式向您发送随机质询。
- 您运行
ssh-keygen -Y sign -f ~/.ssh/id_ed25519 -n proof challenge-file
(调整密钥和文件名)。 - 您发送
challenge-file.sig
给验证者并告诉他们使用名称空间进行验证proof
。 - 验证程序
ssh-keygen -Y verify -n proof
使用适当的参数运行来验证签名。