在服務器上搭建 Git倉庫

服務端

安裝Git

[root@localhost ~]# yum install -y git

創建一個git用戶,用來運行git服務

[root@localhost ~]# adduser git && cd ~git
[root@localhost ~]# mkdir .ssh && chmod 700 .ssh
[root@localhost ~]# touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

禁用shell登錄

注,出於安全考慮,創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行,改爲:

[root@git ~]# vim /etc/passwd
git:x:1000:1000::/home/git:/usr/bin/git-shell

這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因爲我們爲git用戶指定的git-shell每次一登錄就自動退出。

初始化Git倉庫

先選定一個目錄作爲Git倉庫,這裏是/data/git/project.git。

[root@git ~]# cd /data/git/
[root@git git]# git init --bare project.git

執行以上命令 Git命令,會創建一個裸倉庫,裸倉庫沒有工作區,因爲服務器上的Git倉庫純粹是爲了共享,所以不讓用戶直接登錄到服務器上去改工作區,並且服務器上的Git倉庫通常都以.git結尾。然後,把owner改爲git:

[root@git git]# chown -R git.git project.git

客服端

使用 SSH 公鑰進行認證

爲了向 Git 服務器提供 SSH 公鑰,如果某系統用戶尚未擁有密鑰,必須事先爲其生成一份。 這個過程在所有操作系統上都是相似的。 首先,你需要確認自己是否已經擁有密鑰。 默認情況下,用戶的 SSH 密鑰存儲在其 ~/.ssh 目錄下。 進入該目錄並列出其中內容,你便可以快速確認自己是否已擁有密鑰:

[root@localhost ~]# ls ~/.ssh
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

如果沒有id_rsa.pub文件,則客服端生成SSH公鑰

[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
79:87:ad:40:ef:ac:4f:ea:a0:47:f4:45:c3:22:31:66 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|      E. .       |
|     o... +      |
|       ..o .     |
|      .. o.o     |
|     . .S.+ o    |
|      . .= o     |
|     ..   =      |
|     ... +       |
|    .. .+..      |
+-----------------+
[root@localhost ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmUiESftpB4oyLwzqMculvSL9M9yIiraaRinSXLkjNZFBIX9zIxKpCkU7SBKXOfFrQAa0dy+iS8CvAuGmKTQZx27pYXIS/fYpPS5BF/iZP7uQmJaICNuX+Eyog+KceRFyr8TIxsHsMlN74h9t4FusWn7GT7ulLmKc8n1H9t8QPCwT018z9swBzq1+QHJ6nMYGDU2NPai9dvaW3ik69OrxOtAlmHcLPPBkafgdMiL9AkIOGKJzJ73/UcrNUWqFGiwho9pKzWLaoupVYa7t/I+mWXwt/H9tr22qTxiDJZhTVKNPLdeVTUSpj8ZTe9/AAxo4PvNt+jZ5k24jfNEPkmpCl TOYOTA@DESKTOP-O7FUOAH

注,一路回車即可,將生成的id_rsa.pub內容追加到服務器上的/home/git/.ssh/authorized_keys後面,下次你用git時就不需要輸入用戶名和密碼了。

上傳id_rsa.pub到/home/git/.ssh/,重命名爲id_rsa.kwin.pub,追加到authorized_keys 文件的末尾

[root@localhost ~]# cd ~git/.ssh
[root@localhost .ssh]# cat id_rsa.kwin.pub >> authorized_keys
[root@localhost ~]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyQ6mcBiyiYiScdh9hBua8cXoOx59VVudyAkA+m+Gc+hUF09oKAyf5LlI1RJkbobX90L3afUexqnHT+hka1oaX4Gu7tfHYu7nJyGVPcteebJ14wNec750kUH0sS+f87U+Sb37Ynmh/FCCTUU+m/goimH5oe/gH8uSh3mFBlA+NKcBPRWCx7W44L5MK4YqcbddmjXsp+JAO6tHaYBn3GnLB3UzLbQHX222AGO6nByHNBmRHMXePaIzH76zWiy/OjiciJzRon/riftO+O+qOA9/+ZoB0KzycA0MeEOwqx5iWwRHzx8WrYufC9PZdvlKe/a4KxSG1XA15y69y0dFfl0CL root@localhost.localdomain
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmUiESftpB4oyLwzqMculvSL9M9yIiraaRinSXLkjNZFBIX9zIxKpCkU7SBKXOfFrQAa0dy+iS8CvAuGmKTQZx27pYXIS/fYpPS5BF/iZP7uQmJaICNuX+Eyog+KceRFyr8TIxsHsMlN74h9t4FusWn7GT7ulLmKc8n1H9t8QPCwT018z9swBzq1+QHJ6nMYGDU2NPai9dvaW3ik69OrxOtAlmHcLPPBkafgdMiL9AkIOGKJzJ73/UcrNUWqFGiwho9pKzWLaoupVYa7t/I+mWXwt/H9tr22qTxiDJZhTVKNPLdeVTUSpj8ZTe9/AAxo4PvNt+jZ5k24jfNEPkmpCl TOYOTA@DESKTOP-O7FUOAH

說明:我這裏有兩個用戶登錄服務器,所以我這裏就有兩個ssh-rsa

克隆遠程倉庫

注,現在可以通過git clone命令克隆遠程倉庫了,在各自的電腦上運行:
這裏寫圖片描述

端口號如果不是默認的22,則

git clone ssh://[email protected]:22222/data/git/project.git

其中git用戶名,144.168.57.122服務器地址,22222爲SSH端口號,/data/git/prgject.git是倉庫路徑

默認端口號下

$ git clone git@144.168.57.122:/data/git/project.git

1、可以省略ssh://
2、可以省略端口號,但:不能省

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章