SSH協議是通過公鑰和私鑰來進行服務器的授權管理,是git的讀寫操作的標準協議。
假設cglab以服務器管理員賬號,labserver爲主機名。
1. 首先在linux server服務器安裝openssh
$sudo apt-get install openssh-server
2. SSH的公鑰與私鑰,所生成的公鑰可以用不同的用途,比如下面生成的id_rsa.pub公鑰用作shell登陸,而gitadmin.pub用作git訪問。
(1)創建公鑰和私鑰
$ssh-keygen //該操作是在客戶端,
該命令會在用戶主目錄下創建 .ssh 目錄,並在其中創建兩個文件:
l id_rsa, 私鑰文件。是基於 RSA 算法創建。該私鑰文件要妥善保管,不要泄漏。
l id_rsa.pub, 公鑰文件。和 id_rsa 文件是一對兒,該文件作爲公鑰文件,可以公開。
創建了自己的公鑰/私鑰對後,就可以使用下面的命令,實現無口令登錄遠程服務器,即用公鑰認證取代口令認證。
$ssh-keygen –f~/.ssh/gitadmin //該命令創建一個指定名字爲gitadmin的公私鑰文件對。
(2)將公鑰上傳到服務器
$scp ~/.ssh/gitadmin.pubcglab@labserver:/tmp/ //上傳到服務器,用作gitolite訪問,具體用法參見下篇
$ scp ~/.ssh/id_rsa.pubcglab@labserver:/tmp/ //上傳到服務器,用作shell訪問
(3)將上傳的公鑰,根據需要用作不同用途
$ssh cglab@labserver //以cglab賬號登陸服務器
cglab@labserver:~$sudo ssh-copy-id –i /tmp/id_rsa.pubgitadmin@labserver //加入到SSH登陸身份gitamdin,用作shell訪問
(4)SSH主機別名
回到客戶端,在~/.ssh/下創建SSH主機別名,以方便登陸服務器訪問shell用。
$vi ~/.ssh/config
其內容爲:
host admin
user gitadmin //登陸到服務器所用的身份驗證
hostname labserver //服務器主機名
port 22
identityfile ~/.ssh/id_rsa //所用的公私鑰對,在此用的是id_rsa
(5)通過SSH登陸服務器
$ssh gitadmin //使用別名,以服務器賬號gitadmin身份登陸服務器,登陸shell喲。
$ssh gitadmin@labserver //將用默認的id_rsa來認證,可以登陸shell
輝輝
(FightingBull Studio)