SSH是否需要证书?

kst*_*kst 1 ssh

我听说SSH不需要证书。

但是,对于SSH的RSA身份验证,应确保公钥属于服务器,并且可以使用证书来完成。

但是它不使用证书。

那怎么办呢?

Jak*_*uje 5

不需要。但是可以使用它们(但是由于各种原因,它们与SSL!中使用的证书不同)。证书仅有助于将验证委派给某些证书颁发机构。要验证公共密钥,您只需要使用“安全”通道来获取公共密钥。

那么,如何验证所连接服务器的公钥呢?

有几种可能性。服务器管理员将使用不同的安全通道将公钥指纹的公钥发送给您。它们可以如下所示:

  • 公钥: 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)?
      
      Run Code Online (Sandbox Code Playgroud)
    • 然后,您有责任验证指纹与您从管理员那里获得的指纹相同。
    • 如果您不这样做,则很可能有人将您的连接重定向到某个恶意服务器,而您正在完全连接其他地方。主机密钥是唯一的,并且除非攻击者已经破坏了原始服务器(然后您已经被搞砸了),否则攻击者将拥有不同的密钥(因此指纹也将有所不同)。

也可以将主机密钥添加到SSHFPDNS记录中,这将消除上述负担(您应该拥有DNSSEC,否则可以使用与直接连接相同的方式来修改DNS记录)。为此,您需要在ssh_config使用VerifyHostKeyDNS选项中将其打开。

那证书呢?

SSH可以使用证书。这在公司环境中很常见,在该公司环境中,已经为您提供了一个known_hosts配置有证书颁发机构的文件,该文件用于签署所有主机密钥(通常还包括客户端身份验证密钥)。在这种情况下,您不需要上面的任何东西,也无需连接到本地基础架构即可。请注意,这些证书不是SSL / TLS PKI中使用的X509。有关这些证书的更多信息,请参见的手册页ssh-keygen,其中对此进行了详细说明。