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

ssh 远程服务器,permission deny

这个报错是权限被拒绝(Permission denied),核心原因是 Jenkins 运行用户(如jenkins)在通过 SSH/SCP 连接生产服务器时,认证失败(密码错误、SSH 密钥未配置,或生产服务器的root用户禁止远程登录)。

解决步骤(按优先级)

1. 检查生产服务器的root用户是否允许 SSH 登录

生产服务器默认可能禁止root用户远程 SSH 登录,需先开启:

  • 登录生产服务器,编辑 SSH 配置文件:

    bash

    运行

    vi /etc/ssh/sshd_config
  • 找到并修改以下配置:

    ini

    PermitRootLogin yes # 改为yes(默认可能是no或prohibit-password) PasswordAuthentication yes # 若用密码登录,需开启(默认可能是no)
  • 重启 SSH 服务:

    bash

    运行

    systemctl restart sshd
2. 配置 SSH 免密登录(推荐,避免密码错误)

手动在 Jenkins 服务器上配置jenkins用户到生产服务器的SSH 免密登录

  1. 在 Jenkins 服务器上,切换到jenkins用户:

    bash

    运行

    su - jenkins
  2. 生成 SSH 密钥对(一路回车,不设密码):

    bash

    运行

    ssh-keygen -t rsa
  3. 将公钥复制到生产服务器的root用户目录:

    bash

    运行

    ssh-copy-id root@生产服务器IP
    • 执行时会提示输入生产服务器的root密码,输入后公钥会自动写入/root/.ssh/authorized_keys
  4. 测试免密登录:

    bash

    运行

    ssh root@生产服务器IP
    若无需输入密码直接登录,则免密配置成功。
3. 若必须用密码登录,在 SCP 命令中显式指定密码(不推荐)

如果无法配置免密,可借助sshpass工具在 SCP 命令中传递密码(需先安装sshpass):

  1. 在 Jenkins 服务器安装sshpass

    bash

    运行

    # CentOS/RHEL yum install -y sshpass # Ubuntu/Debian apt-get install -y sshpass
  2. 修改 SCP 命令,添加密码参数:

    bash

    运行

    sshpass -p "生产服务器root密码" scp "${jenkins_jar_path}" root@${prod_server_ip}:${prod_jar_path}
4. 检查生产服务器目标目录的权限

确保生产服务器上的${prod_jar_path}目录(如/opt/app)有root用户的写入权限:

bash

运行

# 在生产服务器执行 chmod 755 /opt/app # 确保目录可写

关键总结

  1. 核心问题是Jenkins 用户到生产服务器的 SSH 认证失败,优先配置SSH 免密登录(安全且自动化友好);
  2. 若用密码登录,需确保生产服务器开启root远程登录和密码认证;
  3. 最后检查目标目录权限,避免上传后无法写入。

执行上述步骤后,重新构建即可解决Permission denied的问题。

http://www.jsqmd.com/news/240481/

相关文章:

  • 这十大降重平台凭借AI智能改写功能脱颖而出,并提供免费试用,满足用户对高质量文本的需求
  • 企业级CI/CD工具选型:Argo CD vs Tekton vs Arbess
  • 企业级CI/CD工具选型:Argo CD vs Tekton vs Arbess
  • AI应用架构师的人机协作新范式流程设计最佳实践的未来趋势
  • AI应用架构师的人机协作新范式流程设计最佳实践的未来趋势
  • 成本杀手还是利润引擎?算清企业级AI Agent平台这笔经济账
  • 计算机深度学习毕设实战-基于python-CNN深度学习卷积神经网络天上飞的识别基于python卷积神经网络天上飞的识别
  • 企业级CI/CD工具选型:Jenkins vs Tekton vs Arbess
  • Arbess项目实战 - 基于GitLab+SonarQube搭建Java项目自动化流水线
  • 安全与合规“红线”下,企业级AI Agent平台如何成为“守护者”而非“风险源”?
  • Spring全家桶深度解析:从Spring到Spring Cloud的技术演进之路
  • 用于多模态MRI重建的带空间配准的深度展开网络/文献速递-基于人工智能的医学影像技术
  • Arbess项目实战 - 基于GitLab搭建Vue.js项目自动化流水线
  • 分时电价和两部制电价下,安科瑞预付费管理系统如何帮助园区实现自动计费功能?
  • Google代理跨境电商深度解析:3个关键策略让订单量暴涨
  • Google广告投放:代理服务vs自建服务器,哪条路径更划算
  • DeepSeek后的又一黑马:九坤开源IQuest-Coder-V1,首创LoopCoder机制超越Claude Sonnet?
  • Windows 下小狼毫输入法 (Rime) 极简配置指南:从劝退到顺手
  • AI蒸馏技术:让AI更智能、更高效
  • 为什么人们仍在使用 Vim 而非 Neovim
  • 什么是 AI Agent?让人工智能“动起来”的关键技术
  • 深度学习毕设选题推荐:基于python_CNN卷积网络对猫的体型识别基于python_CNN深度学习卷积网络对猫的体型识别
  • LeetCode算法刷题——双指针
  • Jmeter 4.0压力测试工具安装及使用方法
  • 《创业之路》-844-AI时代新的商业模式:“每个人都可以成为微型企业家,每个AI智能体都可成为一个功能型企业,平台成为创业操作系统。”欢迎来到 CaaS 时代:Company as a Servic
  • 全网最全10个AI论文写作软件,助继续教育学生轻松完成论文!
  • 智能背调平台,为企业用人决策精准护航
  • 【综合能源】计及碳捕集电厂低碳特性及需求响应的综合能源系统多时间尺度调度模型附Matlab代码
  • elementui message组件去掉文字前面的图标、设置类型、设置时长
  • 【服务器数据恢复】服务器泡水硬盘掉线,数据如何“起死回生”?