Centos伺服器ssh免密登入以及搭建私有git伺服器
一、概述
伺服器的免密登入和git伺服器的搭建,關鍵都是要學會把自己用的機器的公鑰新增到伺服器上,讓伺服器“認識”你的電腦,從而不需要輸入密碼就可以遠端登入伺服器上的使用者
免密登入當然是登入root使用者,而搭建git伺服器需要在伺服器上建立一個git使用者。注意伺服器上每個使用者識別的公鑰存在不同的檔案中,因此需要自己的電腦既能免密登入,又能使用git伺服器,就要把自己電腦的公鑰新增到兩個檔案中
二、伺服器免密登入
1、修改伺服器sshd config配置
登入伺服器的root使用者,然後輸入
vim /etc/ssh/sshd_config
編輯root使用者的ssh設定,在檔案中加入
RSAAuthentication yes
PubkeyAuthentication yes
兩句,用以開啟ssh證書登入
注意到檔案中有一行
AuthorizedKeysFile .ssh/authorized_keys
這裡指定了root公鑰存放的檔案,下一步要做的就是將我的電腦的公鑰加到這個檔案裡
2、獲取自己機器的公鑰
ssh-keygen -t rsa
之後一路回車,公鑰和私鑰都會存在預設的~/root/.ssh/目錄中。
進入這個目錄,用 cat id_rsa.pub 檢視公鑰,然後將顯示的內容複製到伺服器的authorized_keys中即可,此檔案一行一個公鑰
3、免密登入
在自己的機器中輸入ssh [email protected]伺服器公網ip就可以直接登入伺服器的root賬號了
三、搭建git伺服器
在理解了伺服器免密登入的原理後搭建git伺服器就很簡單了,我們需要建立一個使用者git,把git倉庫授權給git管理,然後把允許訪問git倉庫的機器的公鑰新增到git使用者的authorized_keys檔案中。
1、安裝git
yum install -y git
-y:對安裝過程中所有的提示選擇yes
2、建立git使用者
adduser git
3、配置git使用者的ssh訪問設定
進入git使用者目錄
cd /home/git
建立.ssh資料夾
mkdir .ssh
將.ssh資料夾的許可權值設為700,即只允許本使用者和root使用者擁有讀、寫、執行許可權。
chmod 700 .ssh
這麼做的原因是是如果authorized_keys檔案、$HOME/.ssh目錄 或 $HOME目錄讓本使用者之外的使用者有寫許可權,那麼sshd都會拒絕使用 ~/.ssh/authorized_keys 檔案中的key來進行認證的。
建立一個空檔案authorized_keys
touch .ssh/authorized_keys
將authorized_keys許可權值設為600,即只允許本使用者和root使用者擁有讀、寫許可權。
chmod 600 .ssh/authorized_keys
將git資料夾的使用者名稱和組名都改為git,-R表示對該資料夾下所有子檔案進行同樣的操作
cd /homechown -R git:git git
4、將本機公鑰拷貝到git的authorized_keys中,一行一個
5、建立git倉庫
在home目錄下新建一個gitrepo資料夾作為git倉庫的儲存室
cd /home mkdir gitrepo
將此資料夾歸為git所有
chown git:git gitrepo
建立第一個git倉庫
cd gitrepo
git init --bare test.git
將倉庫歸為git所有
chown -R git:git test.git
6、在客戶端拉取伺服器新建的git倉庫
git clone [email protected]公網ip:/home/gitrepo/test.git
在本地編輯倉庫並提交後,可以連線到伺服器檢視git倉庫的修改時間,如果修改時間有變化則說明提交成功
7、從客戶端push倉庫
git remote add origin [email protected]公網ip:/home/gitrepo/test.git git push -u origin master
8、禁用shell登入
如果希望git使用者不能登入shell,就要修改git使用者的許可權
修改/etc/passwd
vim /etc/passwd
將
git:x:1000:1000::/home/git:/bin/bash
改為
git:x:1000:1000::/home/git:/bin/git-shell
這樣,git
使用者可以正常通過ssh使用git,但無法登入shell。