jenkins用户在执行scp的时候如何做免密登录

embedded/2024/11/17 21:31:23/

一、背景

jenkins job中执行scp的shell命令,当然不希望每次输入密码,另外处于出于安全考虑,也不建议在scp命令中指定。

所以,我们需要对远程机器进行免密登录。

本文遇到的问题是,在jenkins机器上执行scp已做到了免密,无需输入密码;但是,在jenkins job中执行scp命令,却报错Permission denied, please try again.

二、总体架构

在这里插入图片描述

三、scp免密

jenkins机器上的.ssh/id_rsa添加到远程ssh机器的文件~/.ssh/authorized_keys里。

然后在jenkins机器上执行

ssh devuser@192.168.10.5

其中,192.168.10.5是ftp的地址,ssh用户是devuser,端口默认是22。

这个过程可以说是很简单,经验证,在jenkins机器上上,执行scp命令,成功地下载了zip文件到本地。

在这里插入图片描述

但是,当在jenkins执行scp的时候,报错见下:
在这里插入图片描述

# 尝试从远程机器192.168.10.5的目录/opt/php下载xxx.zip到本地(workspace目录)
+ scp phpuser@192.168.10.5:/opt/php/xxx/xxx.zip ./xxx.zip
Permission denied, please try again.
Permission denied, please try again.
phpuser@192.168.10.5: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Build step 'Execute shell' marked build as failure
Finished: FAILURE

也就是说,ssh免密登录在jenkins用户执行的时候是失效的。

四、免密用户

在Jenkins job中,尝试执行.ssh/id_rsa文件所在的路径,比如:

scp -i /root/.ssh/id_rsa phpuser@192.168.10.5:/opt/php/xxx/xxx.zip ./xxx.zip

仍旧报同样的错误。

但是jenkins机器只有一个root用户,jenkins进程本身也是root用户起的。

在这里插入图片描述
正当陷入纠结时,发现jenkins工作目录下也有一个.ssh目录。

  • /var/jenkins_home/.ssh
    在这里插入图片描述
    注意:它是一个隐藏文件夹。

再次把这个文件夹下的ssh公钥添加至远程ssh的授权文件~/.ssh/authorized_keys里。

jenkins_job_ssh_58">五、jenkins job 指定ssh私钥

上一步是把jenkins工作目录下的.ssh公钥做好了免密授权。

但是,jenkins job在执行scp命令时,默认读取的是/root/.ssh/id_rsa,而非/var/jenkins_home/.ssh/id_rsa。

在这里插入图片描述

在scp的后面指定好ssh私钥文件所在。

scp -i /var/jenkins_home/.ssh/id_rsa phpuser@192.168.10.5:/opt/php/xxx/xxx.zip ./xxx.zip

至此,jenkins用户在执行scp命令时,免密登录就实现了。


http://www.ppmy.cn/embedded/138349.html

相关文章

Flutter:InheritedWidget数据共享

未使用数据共享时,要传递数据,只能组件间一级一级向下传递 下边代码中,创建了一个按钮,当点击时_count, 并将数据通过Test1(count)传递给Test2(count),最终传递给Test3(count)进行渲染展示。 import packa…

麒麟系统下docker搭建jenkins

首先我们需要创建宿主机挂载路径,我这里放在本地的/data/henkins/home,然后赋予权限,命令如下: mkdir -p /data/jenkins/home chown -R 1000:1000 /data/jenkins/home chmod -R 777 /data/jenkins/homedocker run -d --restart …

【小白可懂】微信小程序---课表渲染

结果展示:(代码在最后) WeChat_20241116174431 项目简介 在数字化校园建设的大背景下,为了更好地服务于在校师生,我们开发了一款基于微信小程序的课表管理系统。该系统采用了现代化的前端技术和优雅的设计风格&#x…

leetcode hot100【LeetCode 5.最长回文子串】java实现

LeetCode 5.最长回文子串 题目描述 给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。 示例 1: 输入: s "babad" 输出: "bab" 解释: "aba" 也是一个有效答案。示例 2: 输入: s "cbbd" 输出: "bb"说明: 1 <…

Ollama—87.4k star 的开源大模型服务框架!!

这一年来&#xff0c;AI 发展的越来越快&#xff0c;大模型使用的门槛也越来越低&#xff0c;每个人都可以在自己的本地运行大模型。今天再给大家介绍一个最厉害的开源大模型服务框架——ollama。 项目介绍 Ollama 是一个开源的大语言模型&#xff08;LLM&#xff09;服务工具…

什么是Web 3.0?

web 3.0是非常火的一个概念了&#xff0c;就算你不知道他具体是什么&#xff0c;但是你也一定听说过这个名词。 但是Web 3.0中又夹杂着很多其他的概念&#xff0c;比如币、DeFi、DeApps、NFT、元宇宙&#xff0c;等等更多其他的概念&#xff0c;所以很多人就更难理解了。这篇文…

【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)

& 第四届信号处理与通信技术国际学术会议&#xff08;SPCT 2024&#xff09; 2024 4th International Conference on Signal Processing and Communication Technology 2024年12月27-29日 中国深圳 www.icspct.com 第四届信号处理与通信技术国际学术会议&#x…

sql数据库-排序查询-DQL

目录 语法 排序方式 举例 将表按年龄从小到大排序 将表按年龄从大到小排序 ​编辑 多重排序 将表按年龄升序&#xff0c;年龄相同按入职时间降序 语法 select * from 表名 order by 字段名1 排序方式1&#xff0c;字段2 排序方式2; 排序方式 升序&#xff1a;ASC&…