一、概述
服務器的免密登錄和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 root@服務器公網ip就可以直接登錄服務器的root賬號了
4、禁用密碼登錄(可選
防止服務器登錄密碼被暴力破解,禁用密碼登錄,修改sshd_config,找到PasswordAuthentication將它設置為no
重啟ssh服務
service sshd restart
三、搭建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 /home
chown -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 git@公網ip:/home/gitrepo/test.git
在本地編輯倉庫並提交后,可以連接到服務器查看git倉庫的修改時間,如果修改時間有變化則說明提交成功
7、從客戶端push倉庫
git remote add origin git@公網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。