我听说 SSH 不需要证书。
但是对于 SSH 的 RSA 认证,它应该确保公钥属于服务器,并且可以通过证书来完成。
但它不使用证书。
那么它是怎么做的呢?
最佳答案
不。它不需要它们,但它可以使用它们(但它们与 SSL 中使用的证书不同!出于各种原因)。证书仅有助于将验证委托(delegate)给某些证书颁发机构。要验证公钥,您只需要使用“安全” channel 获取公钥。
那么如何验证所连接服务器的公钥呢?
有几种可能性。服务器管理员将使用不同的安全 channel 向您发送公钥指纹的公钥。它们看起来像这样:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
~/.ssh/known_hosts
以服务器名称和空格为前缀。 SHA256:zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A bitbucket.org (RSA)
The authenticity of host 'bitbucket.org (104.192.143.3)' can't be established.
RSA key fingerprint is SHA256:zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A.
Are you sure you want to continue connecting (yes/no)?
也可以将主机 key 添加到
SSHFP
DNS 记录,这将消除上述负担(您应该有 DNSSEC,否则可以像直接连接一样修改 DNS 记录)。为此,您需要在 ssh_config
中打开它。使用 VerifyHostKeyDNS
选项。那么证书呢?
SSH 可以使用证书。这在公司环境中很常见,您已经获得了
known_hosts
配置了证书颁发机构的文件,用于签署所有主机 key (通常也是客户端身份验证 key )。在这种情况下,您不需要任何来自上面的东西,并且连接到本地基础设施“正常工作”。请注意,这些证书不是 SSL/TLS PKI 中使用的 X509。有关这些证书的更多信息,请参阅 ssh-keygen
的手册页,详细解释了这一点。
关于ssh - SSH 需要证书吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42456380/