我们使用 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 和用户名就行了,测试一下,密钥登录方式也是正常的。

Jenkins 基础篇 - Server 配置的更多相关文章

  1. Jenkins 基础篇-凭证配置

    我们在正式开始使用 Jenkins 之前还要先配置一些凭证,这些凭证的作用主要是用于认证,例如我们要从代码仓库拉取代码,就需要用到代码仓库的账号密码或者密钥:我们要登录远程服务器也需要用户名密码或者密 ...

  2. Jenkins: 基础篇(环境配置)

    自动化领域比较有影响力的开源框架jenkins,确实比较强大,易用.很多公司将其用来做持续即成CI(continuous integration).为了拓展和强化自己的软件设计生态系统,也将很久前使用 ...

  3. Jenkins 基础篇 - 插件安装

    这一小节主要介绍 Jenkins 插件的安装,登录到 Jenkins 后,依次进入到[系统管理]→ [插件管理]→ [可选插件],在这里可以看到所有的 Jenkins 插件,如下图: 我们在最开始安装 ...

  4. Jenkins 基础篇 - 任务创建

    前面了解了 Jenkins 上各种任务的区别后,我们就来实践应用下,先创建一个[文件夹]类型的任务,将我们目前的一些基础的演示任务[移动]到文件夹里面去,这样可以先做个简单的分类. 新建一个[文件夹] ...

  5. Jenkins 基础篇 - 小试牛刀

    现在我们来创建一个简单的 Jenkins 任务,这个任务输出 Java 版本信息和系统信息,通过这个任务我们先了解创建 Jenkins 任务的流程,以及了解一些对任务的基础设置,接下来就是演示任务的整 ...

  6. Jenkins 基础篇 - 环境准备

    前期准备 为了开发这套课程,我专门购买了一台二手戴尔服务器 Dell R720,同时把废弃多年的笔记本电脑也利用了起来.当然如果自己没有多余的电脑,也可以在自己电脑上安装 Vmware Worksta ...

  7. Jenkins 基础篇 - 安装部署

    Jenkins 安装 Jenkins 支持主流的 Linux 发行版系统,同时还支持 macOS.Windows.和 Docker 运行. 具体系统的 Jenkins 安装包可以去官网下载 https ...

  8. Jenkins 基础篇 - 基础设置

    站点设置 刚搭建好 Jenkins 环境,你还需要做一些简单设置,让我们的 Jenkins 看起来是这么一回事,特别是你要用于生产环境的时候.首先就是域名配置,如果你为 Jenkins 服务分配了一个 ...

  9. Jenkins 基础篇 - 任务分类

    从前面的小节中我们看到在创建 Jenkins 任务的时候有好几种类型,如果你专门安装了 Maven 相关插件,可能还会有一个[构建一个 maven 项目]的任务类型,那这些任务类型究竟有何区别,以及我 ...

随机推荐

  1. WebGPU[4] 纹理三角形

    代码见:https://github.com/onsummer/my-dev-notes/tree/master/webgpu-Notes/04-texture-triangle 原创,发布日 202 ...

  2. Scrum完整项目实例

    一.背景 在谈 JIRA 之前,就不得不说说敏捷开发了.正式由于项目是基于敏捷开发进行的,因此才引入了 JIRA 这款适合于敏捷开发的项目管理工具.当然,这里不会大篇章的介绍敏捷开发,之前的文章有详细 ...

  3. Java生鲜电商平台-API接口设计之token、timestamp、sign 具体设计与实现

    转载:https://www.cnblogs.com/jurendage/p/12653865.html 说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安 ...

  4. 它来了,它来了,HarmonyOS应用开发在线体验来了

    接下来是我们的两分钟科普,一分钟玩转HarmonyOS应用开发在线体验,一分钟简单了解"一次开发.多设备部署"的原理.萌新的开发者也能第一时间掌握,往下看吧~ 一分钟玩转Harmo ...

  5. Java(81-93)【数组】

    1.省略格式 静态初始化的时候格式还可以省略一下 int[ ] arrayA={10,20,30}; 静态和动态都可以拆 int[] arrayB; arrayB=new int[ ]{11,21,3 ...

  6. SpringBoot-如何设计优秀的后端接口?

    1 概述 本篇文章以Spring Boot为基础,从以下三个方向讲述了如何设计一个优秀的后端接口体系: 参数校验:涉及Hibernate Validator的各种注解,快速失败模式,分组,组序列以及自 ...

  7. kubectl create / replace 与kubectl apply 的区别

    kubectl create / replace 以ngnix 的 nginx.yaml为例: apiVersion: apps/v1 kind: Deployment metadata: name: ...

  8. JAVAEE_Servlet_23_路径编写总结和url_pattern的编写方式

    路径编写总结和url_pattern的编写方式 路径的编写 超链接 form表单的action属性 重定向 response.sendRedirect("/项目名/资源路径"): ...

  9. 制作一个轻量级的状态管理插件:Vue-data-state

    Vuex 是不是有点繁琐? Vuex 是针对 Vue2 来设计的,因为 option API 本身有很多缺点,所以 Vuex 只好做各种补丁弥补这些缺点,于是变得比较"复杂". 现 ...

  10. 【C#】一个Loading窗体载入与销毁的方法

    写在前面 Minecraft Command Editor 2跳票了近两年的时间(对不起!!).2021年2月,我重启了MCE项目,并正式命名为Minecraft Command Editor 202 ...