例子一
先看療效:
1. 無需公開金鑰
2. 只需要幾個最常用的Linux命令就可以搭建
看步驟
1. 準備Linux伺服器, 安裝好git(一般都是預設裝好的)
2. 命令列操作
useradd git #建立一個git帳號
passwd git #設定git帳號的密碼
su – git #切換到git帳號
cd ~ #轉到使用者目錄
mkdir 項目名稱.git #建立項目git檔案夾
cd 項目名稱.git
git –-bare –share init #初始化git庫
3. 馬上拿起你的git用戶端( 烏龜, SourceTree均可)輸入這樣格式的地址git@ip:/path/to/project.git
例如: git@192.168.1.2:/home/git/YourProject.git
git pull時, 需要輸入密碼, 就輸入上面建立好的git帳號的密碼就可以
開始使用吧!
Tips
這種方法搭建的git伺服器僅限於小團隊和對貢獻代碼不敏感的項目而生
git本身的公開金鑰是為了防止別人偽造使用者名稱進行虛假提交. 但這個方法繞開了這點
想開新的git庫時, 切記使用git帳號去重複以上步驟, 若使用root層級帳號建立的檔案夾使用用戶端時會遇到許可權不足的提示
例子2
1、公開金鑰的產生
任何一個需要使用git伺服器的工程師都需要產生一個ssh的公開金鑰。可以通過ssh-keygen來產生
~/.ssh$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/shizhen/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/shizhen/.ssh/id_rsa.
Your public key has been saved in /home/shizhen/.ssh/id_rsa.pub.
The key fingerprint is:
a8:19:49:f4:e6:e8:4f:8f:3e:47:c9:19:4c:09:ee:7f shizhen@sz-desktop
The key's randomart image is:
首先會讓你輸入要儲存公開金鑰的位置,直接斷行符號即可,接著會提示讓你重複一個密碼兩次,如果不想再使用公開金鑰的時候輸入密碼,直接斷行符號即可。完成後會在home目錄下的.ssh目錄中產生兩個檔案id_rsa(私人密鑰)和id_rsa.pub(公開金鑰)。
將產生的公開金鑰即id_rsa.pub發給git倉庫的管理者。
2、架設伺服器
(1)伺服器端
最好建立一個git組,讓後再添加一個git使用者,並且添加到該組當中。
sudo adduser git
su git
cd ~
mkdir .ssh
在git使用者建立一個.ssh的目錄,將開發人員的SSH公開金鑰添加到git這個使用者的authorized_keys這個檔案當中。如有zhangsan,lisi兩個開發人員。
cat /tmp/id_rsa_zhangsan.pub >> ~/.ssh/authorized_keys
cat /tmp/id_rsa_lisi.pub >> ~/.ssh/authorized_keys
建立一個空的倉庫
cd work
mkdir project.git
cd project.git
git --bare init
使用--bare會初始化一個不帶任何工作目錄的倉庫,不會看到工程源碼。
為了不使開發人員每次clone代碼的時候都輸入ip地址,可以採用DNS的方式。具體操作如下
sudo vim /etc/hosts
在裡面加入下面一行
192.168.1.100 gitserver
(2)開發人員端
若沒有倉庫的情況下,需要首先建立一個倉庫。在需要建立倉庫的,目錄下執行以下的命令。
cd my_project
git init
git add . (將所有檔案加入倉庫管理)
git commit -m "initial commit"
git remote add origin git@gitserver:/home/git/work/project.git (即:git@192.168.1.100:/home/git/work/project.git)
git push origin master
若本地已有倉庫,但想把其中的代碼push到我們新的伺服器上,可以直接用下面的命令
把想要push的分支代碼建立成master分支
git checkout -b master xxxxx
git push origin master
這樣一個簡單的伺服器就可以工作了,其他的開發人員可以直接從伺服器上進行代碼開發了。
為了保護git伺服器,限制開發人員登陸伺服器,可以採用如下的措施。
sudo vim /etc/passwd
在檔案結尾找到這樣的類
git:x:1001:1001:,,,:/home/git:/bin/bash
將其中的/bin/bash/改為/user/bin/git-shell
現在開發人員只能通過SSH來推送和擷取代碼,不能登陸ssh服務端了。
3.問題
?在的 ssh 使用同?擁姆椒??霈F???息
Agent admitted failure to sign using the key
解?Q方式 使用 ssh-add 指令將私密金鑰 加進來 (根據個人的密匙命名不同更改 id_rsa)
即各自的開發人員執行命令
ssh-add id_rsa