使用带有多个证书的 SSH 公钥

使用带有多个证书的 SSH 公钥

我使用 SSH 公钥连接到多个服务器。这些服务器使用 SSH CA 来管理授权用户。基本概念如下所述:https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu

因此,除了我常用的id_rsaid_rsa.pub文件之外,我还有一个id_rsa-cert.pub包含证书的文件。 所有这些都运行良好,我可以立即登录到配置为信任用于签署我的密钥的 CA 密钥的新机器。

但是,现在我的密钥已由不同的 CA 为另一组机器签名。现在的问题是,我如何告诉 SSH 此密钥现在有两个证书。从文档来看,似乎没有办法指定第二个证书文件:

ssh(1) will try to load certificate information from the filename
obtained by appending -cert.pub to the path of a specified IdentityFile.

简单地将新证书附加到此文件(就像您对 所做的那样authorized_keys)也不起作用。在这种情况下,SSH 仍然只会识别第一个证书并忽略文件的其余部分。

有人知道如何告诉 SSH 我有此密钥的第二个证书吗?

答案1

由于您使用相同的私钥,并且ssh将使用密钥名称来猜测证书名称,因此复制您的私钥和公钥:

cp ~.ssh/id_rsa id_rsa_group2
cp ~.ssh/id_rsa.pub id_rsa_group2.pub # probably not necessary

然后使证书名称匹配,应该是id_rsa_group2-cert.pub

测试一下:ssh -i .ssh/id_rsa_group2 ip_of_your_server

然后通过编辑使密钥选择自动进行~/.ssh/config

# For your first certificate:
Host a
    User root
    IdentityFile ~/.ssh/id_rsa

# For your new certificate
Host b
    User root
    IdentityFile ~/.ssh/id_rsa_group2

答案2

您可以CertificateFile在命令行上使用配置选项来实现此目的:ssh -o CertificateFile=~/.ssh/second_certificate.pub host_b或者将其设置到配置文件中(~/.ssh/config)。

Host host_b
    CertificateFile ~/.ssh/second_certificate.pub

由于两种情况下都使用相同的证书,因此它应该可以很好地与您的 配合使用ssh-agent

相关内容