jenkins构建项目时使用sshpass + scp远程拷贝踩坑。

我这边的流程是这样的:	(服务器 centos 7.6)
	1. jenkins从gitlab上将代码拉到本地,
	2. 在本地打包之后发送到其他服务器上。

使用jenkins将代码包拷贝到其他服务器上可以使用jenkins提供的插件(自行百度)。
我这里使用了scp将本地的软件包拷贝到其他服务器上。

记录一下踩的坑。

yum -y install sshpass 

使用sshpass,不输入密码。

# jenkins中脚本中关于scp的shell如下:
sshpass -p 'abc@123!!' scp -r $sda1_client_hard_jar sda1@172.16.100.111:$remote_deploy_dir/;

# 构建报错信息如下:
sda1@172.16.100.111:/home/sda1/app/
Host key verification failed.
Build step 'Execute shell' marked build as failure

排障历程:

	新建用户:
	useradd bboo
	
	切换用户:
	su bboo

	执行sshpass + scp的命令:
	sshpass -p 'abc@123!!' scp -r /home/bboo/abc sda1@172.16.100.111:/home/sda1/
	
	# 错误信息如下:
	Host key verification failed.

	# 尝试是否可以远程登陆:
	ssh sda1@172.16.100.111		# 可以登陆
	
	再次,执行sshpass + scp的命令成功。
	
	需要先建立一次ssh链接,然后才可以使用sshpass。


以下是解决jinkins无法使用sshpass + scp的办法:

	jenkins执行脚本使用的是jenkins这个用户。

	切换到jenkin用户发现无法切换。
	su jenkins

	查看jenkins用户,发现没有bash的执行权限。
	cat /etc/passwd
	jenkins:x:998:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false

	赋予bash的执行权限。
	vim /etc/passwd
	jenkins:x:998:994:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
	
	切换到jenkins用户。
	su jenkins
	
	链接远程服务器的sda1用户
	ssh sda1@172.16.100.111

	赋予bash的sshpass执行权限。
	vim /etc/passwd
	jenkins:x:998:994:Jenkins Automation Server:/var/lib/jenkins:/bin/sshpass

	再次在jenkins页面构建服务,成功。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值