当前位置: 首页 > news >正文

解决 jenkins 用户 SSH 连接目标服务器时的 Permission denied 问题

配置 SSH 密钥免密登录(核心是让目标服务器信任 jenkins 用户的公钥),步骤如下:

步骤 1:为 jenkins 用户生成 SSH 密钥对

在 Jenkins 所在服务器 执行以下命令:

# 切换到 jenkins 用户(-i 表示模拟登录,加载用户环境)
sudo -u jenkins -i# 生成 SSH 密钥对(一路回车,使用默认路径 `~/.ssh/id_rsa`,且不设置密码)
ssh-keygen -t rsa

执行后,jenkins 用户的 ~/.ssh/ 目录会生成:

  • id_rsa私钥(需在 Jenkins 凭据中配置)。
  • id_rsa.pub公钥(需复制到目标服务器)。

步骤 2:将公钥复制到目标服务器的 authorized_keys

在 Jenkins 所在服务器,执行以下命令,将 jenkins 的公钥同步到目标服务器(以 root 用户为例):

# 自动复制公钥到目标服务器的 ~/.ssh/authorized_keys
ssh-copy-id root@目标服务器ip
  • 执行时会提示输入 root@192.168.195.128 的密码,输入正确密码后,公钥会被追加到目标服务器 root 用户的 ~/.ssh/authorized_keys 文件中。

步骤 3:确保目标服务器允许 SSH 密钥登录

在 目标服务器 执行以下操作,检查并修改 SSH 服务配置:

# 编辑 SSH 服务配置文件
sudo vim /etc/ssh/sshd_config# 确保以下配置项存在且为正确值:
PermitRootLogin yes          # 允许 root 用户登录(若需禁止 root 密码登录,可设为 PermitRootLogin without-password)
PubkeyAuthentication yes    # 启用公钥认证
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2  # 公钥文件路径# 重启 SSH 服务使配置生效
sudo systemctl restart sshd

步骤 4:测试 jenkins 用户的 SSH 连接

回到 Jenkins 所在服务器,再次切换到 jenkins 用户并测试 SSH 连接:

sudo -u jenkins -i
ssh root@目标服务器ip
  • 若无需输入密码直接登录成功,说明 SSH 密钥免密登录配置完成
步骤 5:给jenkins 用户 ~/.ssh 目录及文件权限

即使 known_hosts 内容正确,若权限过宽(如其他用户可读写),SSH 会拒绝读取,导致验证失败。在 Jenkins 所在服务器 执行:

# 1. 切换到 root 用户(或有 sudo 权限的用户)
sudo su -# 2. 修复 .ssh 目录权限(仅 jenkins 用户可读写)
chmod 777 /var/lib/jenkins/.ssh# 3. 修复 known_hosts 文件权限(仅 jenkins 用户可读写)
chmod 777 /var/lib/jenkins/.ssh/known_hosts# 4. 确认权限(输出应显示 jenkins:jenkins 且权限为 rwx------ 和 rw-------)
ls -ld /var/lib/jenkins/.ssh
ls -l /var/lib/jenkins/.ssh/known_hosts

后续:在 Jenkins 中配置 SSH 凭据

将 jenkins 用户的 私钥~/.ssh/id_rsa 的内容)配置到 Jenkins 凭据中:

  1. 进入 Jenkins → 左侧 “管理 Jenkins” → “凭据” → “系统” → “全局凭据” → “添加凭据”
  2. 选择 “SSH Username with private key” 类型,填写:
    • Username:目标服务器的登录用户(如 root)。
    • Private Key:选择 Enter directly,粘贴 jenkins 用户 ~/.ssh/id_rsa 文件的完整内容
    • ID:自定义(如 dev-ssh-cred,需与 Jenkinsfile 中引用的 ID 一致)。
  3. 点击 “确定” 保存凭据。

总结

核心逻辑是:让 jenkins 用户拥有 SSH 密钥对 → 目标服务器信任该公钥 → Jenkins 通过凭据管理私钥,最终实现自动化 SSH 免密连接。配置完成后,Jenkins 执行 sshagentscpssh 命令时将不再出现 Permission denied 错误。

http://www.dtcms.com/a/424111.html

相关文章:

  • 【html】canvas实现一个时钟
  • 怎么用支付宝做发卡网站优质的seo网站排名优化软件
  • 论文阅读四-第三章
  • 工程网站模板wordpress查看
  • openai代码研读:OpenAI Python SDK 中 AsyncOpenAI 类的定义
  • 广东公诚通信建设监理有限公司网站建设内容管理网站的目的
  • 乐平市网站建设企业运营数据分析报告
  • 一张草稿纸
  • GSPO论文阅读
  • 做设计去哪个网站找素材怎么推广效果好呢网站怎么做推广
  • 电子商务网站开发分几个模块wordpress阅读数
  • 做自媒体一般都注册几个网站网站建设的可用性
  • 南通网站快速收录网站备案 万网
  • 网站加速器免费永久企业网站 优秀
  • 做模板网站价格银川专业做网站
  • QML 核心概念:构建动态 UI
  • 雅江网站建设会外语和做网站
  • vim删除文本文件内容
  • 嵌入式系统应用--TFTLCD 显示实验 4 之内存搬运
  • 网站内部优化是什么河北省住房和城乡建设部网站
  • 单位建设网站用交印花税吗网页设计与制作教程知识点总结
  • 广州途道信息科技有限公司企业白皮书:创新驱动增长,责任铸就品牌
  • 百度公司做网站吗如何上传文件到自己的网站
  • 网站优化公司哪家好如何建网站和推广
  • 做动效很好的网站建筑建材网站建设
  • 月刊可以用什么网站做网页开发软件有哪些
  • Coze源码分析-资源库-编辑插件-后端源码-领域/数据访问层
  • 【python】函数进阶
  • 河南便宜网站建设价格制作网页图片格式
  • 如何将文件从电脑传输到安卓设备