SSH 使用 public 密钥(不是私钥)进行身份验证

SSH authenticate with public key (not private key)

是否可以使用 public 密钥连接到服务器?服务器持有 authorized_keys 中的私钥,客户端可以连接: ssh -i id_rsa.pub server

这与使用public/private密钥的通常方式完全相反:客户端保存public密钥,服务器保存私钥。

现在的原因:对于正在部署给客户的机器,我想设置一个远程连接以在出现问题时拯救机器。

  1. 机器启动到救援服务器的反向 SSH 连接:使用 public 密钥连接(所有机器上相同:ssh -i id_rsa.pub -NR 64000:localhost:22 rescue@server
  2. 机器打开了一个频道,但是无法执行命令(提示/bin/false
  3. 在服务器上,通过开放通道对机器进行 SSH 并使用私钥进行身份验证(通常的方式:ssh -i id_rsa -p 64000 localhost)。

由于非对称加密的工作方式,您不能使用与 private/public 相反的顺序进行身份验证。

您的替代解决方案可以是使用 openssh 证书,如手册页和许多操作方法中所述。