我注意到,当我在 AWS 中创建实例时,AWS 会为此实例创建私钥文件,然后我将此私钥文件下载到本地计算机,然后通过 ssh -i <this_private_key> user@aws-ip 连接到该实例-地址。
我尝试对其他云中的其他 Linux 服务器使用此身份验证方案:只需从 ~/.ssh/id_rsa 复制私钥并保存它,然后尝试从一台 ubuntu 服务器连接到我复制私钥但连接被拒绝的机器。我知道通常我需要在远程服务器上生成 SSH 密钥对 PUBLIC 密钥到authorized_keys 文件,并且我总是使用这种方法,但我对 AWS 方案及其工作原理感兴趣。我可以像在 AWS 中那样连接到其他云中的远程服务器或位于我的 PC 上的虚拟机吗 - 仅使用远程计算机的私钥。
答案1
SSH 证书身份验证 (PKI) 使用私钥(私有)和公钥(无需保密)。当您建立 PKI 连接时,您的私钥安全地保存在客户端上,而相应的公钥则放置在服务器上。您可以拥有多个公钥/私钥对,并告诉ssh
使用哪一个(在命令行上ssh -i {identity_file}
或在每个主机块的配置文件中)。
为了方便起见,AWS 可能会生成用于登录新实例的公钥/私钥。您通过安全连接下载私钥并将其存储在本地。它已经拥有公钥,因此从现在开始,您的私钥副本及其公钥副本的组合允许验证连接尝试。
当您运行该命令时,ssh -i {private_key} {remote_host}…
实际发生的是该ssh
命令使用此私钥作为建立连接的协商的一部分。除非您将公钥复制到其他目标,否则其他任何东西都不可能拥有公钥。
您可以将相同的公钥放置在任意数量的远程计算机上。然后,您的私钥实例可以验证您对任何这些远程计算机的访问权限。
您不应通过将私钥复制到其他服务器来共享私钥。相反,在可行的情况下,您应该为要视为客户端的每个位置(即从您发起 ssh 连接的位置)生成单独的公钥/私钥组合,并将新创建的公钥复制到相应的目标服务器。
最后,你问:“我是否可以像在 AWS 中一样连接到其他云中的远程服务器或位于我的 PC 上的虚拟机 - 仅使用远程计算机的私钥?“您只能连接到具有与您的私钥之一对应的公钥的远程服务器。