Jenkins Publish over SSH权限配置小记

上次的Jenkins使用简介,现已将Jenkins用在实际项目中,这里介绍下Publish over SSH的使用和服务器用户权限配置。

Publish over SSH插件主要功能是将构建好的应用发布到远程机。用户登录可以使用key或者密码方式,支持添加多个server。不过有一点特殊,只能添加一套密码或key。

猜测作者的思路是想用统一账号用于构建操作,基于这种情况我们为各个服务器创建统一账号,以下基于key方式。

创建key

选一个服务器创建key,步骤如下:

1
2
3
ssh-keygen -t rsa
cd .ssh
cat id_rsa.pub >> authorized_keys

将私钥和authorized_keys下载下来

id_rsa更名为jenkins_key,后面用于ssh登录。 authorized_keys上传到需要配置的服务器。

创建jenkins用户

以下为我写的创建用户脚本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh


## add user
adduser jenkins


# config key
su jenkins

cd /home/jenkins
mkdir .ssh
cd .ssh
wget http://192.168.1.1/authorized_keys
chmod 700 ../.ssh
chmod 600 authorized_keys

# config user
exit
passwd -u -f jenkins
usermod -p -u jenkins

配置权限

这时jenkins用户已经创建好了,但是这个用户目前还没有什么权限,以PHP项目为例,在构建时需要执行chown等命令,这时需要对jenkins单独赋予一些权限。

/etc/sudoers.d/下创建文件extra_sudoer

1
jenkins ALL=(root,nginx) NOPASSWD:/bin/chown, /bin/chmod, /usr/bin/php, /bin/bash

以上配置意思是,jenkins用户使用sudo命令执行chown等时不需要输入密码。

有一点需注意,使用sudo切换用户时需加-s选项,如:

1
sudo -u nginx -s php artisan route:clear

对于sudoers配置规则可以参考:sudoers的深入剖析与用户权限控制

以上。

updatedupdated2018-10-262018-10-26
Load Comments?