1. 程式人生 > >Centos伺服器ssh免密登入以及搭建私有git伺服器

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。