You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins SSH Agent插件无公钥时如何与服务器建立连接?

SSH认证与Jenkins SSH Agent插件的密钥逻辑
  • 先纠正一个常见误解:本地SSH连接远程服务器时,客户端不会主动发送公钥给服务器。实际流程是:

    1. 服务器生成一个随机字符串发送给客户端;
    2. 客户端用本地私钥(比如~/.ssh/id_rsa)对这个字符串进行签名;
    3. 客户端把签名结果发回服务器;
    4. 服务器用自己authorized_keys文件中存储的公钥,尝试验证这个签名——如果某条公钥能验证通过,就证明客户端持有对应的私钥,认证通过。
  • Jenkins SSH Agent插件只需要私钥的原因很简单:它只需要完成客户端侧的「私钥签名」操作,不需要管公钥的事。服务器那边的authorized_keys文件是提前配置好的——你需要把对应私钥的公钥,添加到服务器目标用户的~/.ssh/authorized_keys文件里(比如要以deploy用户登录服务器,就把公钥放到服务器上/home/deploy/.ssh/authorized_keys中)。

  • 你的假设方向是对的,但细节有偏差:不是服务器把用户名和公钥关联,而是服务器上每个用户的家目录下,都有自己的~/.ssh/authorized_keys文件,这个文件里的所有公钥,都代表允许以该用户身份登录的客户端私钥。当Jenkins用指定用户名+私钥发起连接时,服务器会自动去该用户的authorized_keys里找能验证签名的公钥,匹配成功就完成认证。

内容的提问来源于stack exchange,提问作者zhongyuan chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 12:58:49