我们使用 Jenkins 部署服务之前要先配置我们的目标服务器,配置目标服务器也很简单,就是将服务器的 IP、账号密码或者账号密钥配置在 Jenkins中。在演示服务器配置之前我们要先知道 Linux 系统中的用户和用户组,最主要的要知道怎么创建用户。
下面我们将介绍如何在 Linux 系统中创建用户,以及如何将用户添加到组,我们还将展示如何从组中删除用户以及如何创建,删除和列出组。要向一个群组添加用户,我们要以具有 sudo 访问权限或 root 用户身份登录。Linux 组是组织单位,用于组织和管理 Linux 中的用户帐户。组的主要目的是定义一组特权,例如对给定资源的读取,写入或执行权限,这些特权可以在组内的用户之间共享。
Linux 操作系统中有两种类型的组:主要组——用户创建文件时,文件的组将设置为用户的主要组。通常,组的名称与用户的名称相同。有关用户的主要组的信息存储在 /etc/passwd
文件中。次要或补充组——在希望向某个用户授予某些文件权限时很有用属于该组成员的一组用户。例如,如果将特定用户添加到 docker 组,则该用户将继承该组的访问权限,并且将能够运行 docker 命令。每个用户可以完全属于一个主要组,零个或多个次要组。
涉及到的命令如下:
# 将用户附加到某个组
$ sudo usermod -a -G groupname username
# 将用户添加到新组时,尽量始终使用 -a(附加)开关。
# 如果省略 -a 开关,则该用户将从 -G 开关之后未列出的任何组中删除。
# 将用户添加到多个组,组名以英文逗号分割
$ sudo usermod -a -G groupname1,groupname2 username
# 将用户从某个组中删除
$ sudo gpasswd -d username groupname
# 创建新的组
$ sudo groupadd groupname
# 删除现有的组
$ sudo groupdel groupname
# 更改用户的主要组
$ sudo usermod -g groupname username
# 创建用户时同时分配到组
# 创建一个名为tony的新用户,主要组为users,辅助组为wheel和docker
$ sudo useradd -g users -G wheel,docker tony
# 设置用户登录密码,根据提示两次输入密码
$ sudo passwd username
# 查看用户组相关信息,如果不加用户名则显示当前用户的信息
$ id username
# 或者
$ groups username
我这里在自己分服务器上创建了一个 maintainer 运维用户,同时把这个用户添加到 docker 组和 wheel 组,同时我还将该用户设置成可以采用密钥的方式登录。涉及到的操作命令如下:
# 创建用户并加入到组
$ sudo useradd -g users -G wheel,docker maintainer
# 设置登录密码
$ sudo passwd maintainer
# 以maintainer用户登录后创建登录密钥
# 以下命令执行后会有交互输入内容,或者一直敲回车键默认即可
$ ssh-keygen -t rsa -b 2048 -v
如果你想用同一个密钥文件登录不同的服务器,则需要将公钥文件复制到其他服务器的用户目录的 .ssh 目录中,操作命令如下:
# 前提是确保其他服务器上要先存在该用户
$ ssh-copy-id -i maintainer.pub maintainer@192.168.31.111
服务器上的用户设置好后就去到 Jenkins 的【系统管理】→ 【系统设置】里面的最下面的【SSH Servers】设置选项处。
点击【新增】,添加服务器配置,填好对应信息:
在【高级】设置里面,勾选上【Use password authentication, or use a different key】,设置我们的登录密码:
其他设置默认即可,点击【Test Configuration】测试以下是否正常,提示 Success 表示成功。
我们设置一台以密钥方式登录的服务器,在【SSH Servers】上面的【Publish over SSH】处配置我们统一的密钥,当然每台服务器可以用不同的密钥,我这里为了方便统一管理,使用相同一个密钥。这里Key的内容就是前面创建密钥的密钥:
/home/maintainer/.ssh/maintainer
文件的内容。
继续【新增】一个以密钥登录的服务器配置,这里只设置服务器的名称、IP 和用户名就行了,测试一下,密钥登录方式也是正常的。