我們使用 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 和用戶名就行了,測試一下,密鑰登錄方式也是正常的。