SSH需要证书吗?

时间:2017-02-25 13:00:44

标签: ssh

我听说SSH不需要证书。

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

但它不使用证书。

那怎么办?

1 个答案:

答案 0 :(得分:4)

没有。它不需要它们,但它可以使用它们(但它们与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)?
      
    • 然后,您有责任确认指纹与您从管理员处获得的指纹相同。
    • 如果你不这样做,你就有可能有人将你的连接重定向到某个恶意服务器而你正在完全连接其他地方。主机密钥是唯一的,这个攻击者会有不同的密钥(因此不同的指纹),除非他已经破坏了原始服务器(然后你已经搞砸了)。

还有可能将主机密钥添加到SSHFP DNS记录中,这将消除上述负担(您应该拥有DNSSEC,否则DNS记录可以像直接连接一样进行修改)。为此,您需要使用ssh_config选项在VerifyHostKeyDNS中启用此功能。

证书怎么样?

SSH可以使用证书。这在公司环境中很常见,在该环境中,您已经获得了使用证书颁发机构配置的known_hosts文件,该文件用于签署所有主机密钥(通常还有客户端身份验证密钥)。在这种情况下,您不需要上面的任何内容并连接到本地基础设施“只是工作”。请注意,这些证书不是SSL / TLS PKI中使用的X509。有关这些证书的详细信息,请参阅ssh-keygen的手册页,其中详细说明了这一点。