除了 之外,还可以增加远程 SSH 验证的安全性。Facebook 和 Yahoo 已经更换使用 SSH 用户证书来避免中心认证系统宕机。因为他不支持拓展(需要 1:1 匹配),所以也利于维持 文件先后一致。
一个 数字证书认证机构 可以对连接到服务器上的每个客户端进行签名和安全认证。
签名的证书还可以指向当前证书的用户(登录身份)。每个用户会记录在一个文件中:
现在让我们来创建 数字证书认证机构。
使用一台处于气隙系统下【译者注:即与互联网物理隔离】的计算机,生成用户证书颁发机构的根证书:
❯ ssh-keygen -C "SSH User Certificate Authority" -f sshuser.root.ca
把根证书(
sshuser.root.ca.pub
)放到每个主机的/etc/ssh/
目录下,保证文件权限是chmod 644
。让用户或客户端从 Yubikey 中提取他们的公钥以便在处于气隙系统下的计算机中使用新 CA 签名来认证:
ssh-keygen -D /usr/local/opt/opensc/lib/pkcs11/opensc-pkcs11.so -e
在被处于气隙系统下的计算机签名的用户证书, 要特别注意一下登录名(
<user>
),确保这个证书能够指向被声明的主体(,使用逗号分隔),证书到期时间(+52w
)和序列号(<serial>
)。确认用户证书无误:
user-cert.pub:
Type: ssh-rsa-cert-v01@openssh.com user certificate
Public key: RSA-CERT SHA256:NWmw3siRlxn3bsIhzaFrCsh66KKIWapFuZsNiDXhRLw
Signing CA: RSA SHA256:HLD1Eb4XiCoyXew23skyisJt+3P02MOsrHHbK/DmlgY
Key ID: "foobar"
Serial: 1928121
Valid: from 2016-12-10T00:10:00 to 2017-12-09T00:10:10
access-root
Critical Options: (none)
Extensions:
permit-X11-forwarding
permit-agent-forwarding
permit-port-forwarding
permit-pty
permit-user-rc