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

Posted

技术标签:

【中文标题】SSH 使用公钥(不是私钥)进行身份验证【英文标题】:SSH authenticate with public key (not private key) 【发布时间】:2015-10-20 07:28:56 【问题描述】:

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

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

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

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

【问题讨论】:

你的问题是off-topic这里。 只需为您的所有计算机配置一个共享私钥,它们用于建立初始连接。无论如何,这正是您想要做的事情,除了这会奏效。 【参考方案1】:

由于非对称加密的工作方式,您不能使用密钥以相反的私有/公共顺序进行身份验证。

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

【讨论】:

以上是关于SSH 使用公钥(不是私钥)进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 vertx 在 JWT 公钥/私钥身份验证中握手

Jenkins Publish over ssh 身份验证失败,使用私钥

通过 R 使用 Linux Azure DSVM 进行 SSH 公钥身份验证

使用 PuTTY 进行身份验证时,“无法使用密钥文件“...\id_rsa”(OpenSSH SSH-2 私钥)”[关闭]

再次使用公钥进行身份验证的问题 GCP Source Repository

使用 JWT 进行身份验证时是不是可以消除私钥攻击向量?