ssh - SSH 需要证书吗?

标签 ssh

我听说 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 是唯一的,除非他已经破坏了原始服务器(然后您已经被搞砸了),否则该攻击者将拥有不同的 key (因此指纹也不同)。

  • 也可以将主机 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/

    相关文章:

    php - 在Plesk服务器中启用Tokenizer扩展

    python - 为什么我通过shell可以连接MySQL,但通过Python却无法连接?

    java - 您是否应该为网络应用程序的每次上传使用单独的 SSH session

    ssh - GitLab CI/CD 脚本改进

    ssh - 为什么我可以 ping 服务器但无法通过 SSH 连接?

    Cygwin 上的 Git : Fails to add the host to the list of known hosts

    Vim 从机器 B 通过机器 A 编辑文件

    ssh - 通过 ssh 转发 SIGTERM

    linux - 从网络外部进行 SSH 访问