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

时间:2018-07-20 09:54:35

标签: ssh openssh ssh-agent

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

我想让客户端程序将证书添加到代理,并将其与密钥相关联,以便它可以将密钥与证书一起使用ssh到远程服务器。我该怎么办?

2 个答案:

答案 0 :(得分:0)

您是否要通过颁发临时OpenSSH证书来实现临时SSH访问?如果是,为什么不每次用户通过SSH-CA认证时都只生成一个新的密钥对?

无论如何:OpenSSH具有硬编码的文件名约定。您必须将OpenSSH证书放在私钥文件旁边,然后调用 ssh-add

您的密钥对:

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

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

$HOME/.ssh/id_rsa-cert.pub

答案 1 :(得分:0)

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

Uber的ussh似乎提供了此功能,但需要注意的是会生成新的密钥对。 Uber certificate authority announcement引人入胜:

  

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

ussh PAM模块在github上。