将证书添加到ssh-agent以获取已在代理中的密钥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将证书添加到ssh-agent以获取已在代理中的密钥相关的知识,希望对你有一定的参考价值。

我正在编写一个允许用户登录服务器的客户端程序。该程序期望用户已经设置了ssh代理并向其添加了RSA密钥对。它抓取公钥并将其发送给远程签名者,该签名者返回公钥的SSH证书。此证书声明允许公钥的所有者登录服务器。

我想让客户端程序将证书添加到代理并将其与密钥关联,以便它可以使用带有证书的密钥ssh到远程服务器。我怎样才能做到这一点?

答案

您想通过发布临时OpenSSH证书来实现临时SSH访问吗?如果是,为什么不在每次用户对SSH-CA进行身份验证时生成新的密钥对?

无论如何:OpenSSH具有硬编码的文件名约定。除了私钥文件之外,您还必须放置OpenSSH证书并调用ssh-add。

你的密钥对:

$HOME/.ssh/id_rsa
$HOME/.ssh/id_rsa.pub

您的OpenSSH证书必须位于此处:

$HOME/.ssh/id_rsa-cert.pub
另一答案

我一直在寻找这个问题的解决方案。

优步的ussh似乎提供了这种功能,尽管需要注意的是会生成一个新的密钥对。 Uber certificate authority announcement有这个诱人的引用:

员工在运行ussh命令时会获得ussh证书。这将连接到USSHCA,执行pam会话并将客户端的ssh代理转发给CA.如果客户端成功进行身份验证,CA将生成新的ssh密钥,使用配置的信息(有效期,有效用户,允许的选项等)填充关联的证书,并将密钥和证书添加到远程剂。证书将添加到代理程序并超时,告知代理程序在证书过期时删除密钥。

ussh PAM模块在github上。

以上是关于将证书添加到ssh-agent以获取已在代理中的密钥的主要内容,如果未能解决你的问题,请参考以下文章

ssh-add和ssh-agent

ssh-agent && 及 ssh-add介绍

我可以将 ssh 私钥永久添加到我的用户代理吗?

Windows OpenSSH ssh-agent 服务在哪里秘密存储私钥

Linux 命令(211)—— ssh-agent 命令

Linux 命令(211)—— ssh-agent 命令