git伺服器固定ip
A. 使用Gitolite搭建Git伺服器
Git服務的管理工具,主要有如下幾種。
Gitolite 使用perl語言編寫,維護和更新比較積極,下面測試使用Gitolite搭建Git伺服器。
一般新建用戶 ~/.ssh/ 目錄是不存在的。
生成路徑會在ssh-kengen執行後給出,也可修改。windows下生成路徑默認位於 C:/user/用戶名/.ssh 下。
此時, gitolite 會初始化兩個倉庫,同時創建 authorized_keys 文件
管理庫中有兩個目錄, conf/ 和 keydir/ 。
倉庫的創建通過編輯 gitolite-admin/conf/gitolite.conf 即可,然後將配置後的文件上傳伺服器。
若本地已有倉庫repo2,將其添加到伺服器
gitolite可以通過用戶組的方式進行管理
如上提示,需要輸入密碼。
需要安裝 openssh ,並將 gitolite 用戶添加在 sshusers 組中,有的伺服器可能是 ssh 組。
計算機領域的Cookbook指的是實用經典案例的意思,是對一些普遍性問題的解決方案的總結和整理。
B. 如何在mac系統下搭建git伺服器
第一步,下載gitblit
http://gitblit.com/
這里當然是選擇linux/osx的版本。下載下來是一個.tar.gz的壓縮文件,我下載時最新版本是gitblit-1.7.1.tar.gz
C. 怎麼在ubuntu創建git伺服器
安裝OpenSSH並配置SSH無密碼登陸
通過命令 sudo apt-get install openssh-server,安裝SSH服務。
通過命令 ps –e|grep ssh,查看ssh服務是否啟動。
通過以上命令,我們為Ubantu系統安裝SSH服務,並配置SSH無密碼登陸,首先我們修改主機和ip配置文件:gedit /ect/hosts
2、創建用戶git,用來管理運行git服務。
3、配置無密碼SSH登陸
在gitClient_01上,我們使用命令:ssh-keygen –t rsa 生成密鑰,如下圖
完成之後,在.ssh目錄下,我們可以看到id_rsa和id_rsa.pub文件,id_rsa.pub為公鑰,我們通過命令scp /home/git/.ssh/id_rsa.pub gitServer:/home/git將gitClient_01上生成的公鑰拷貝到gitServer上。
在gitServer上我們首先查看/home/git/.ssh目錄下是否存在authorized_kesys文件,
如果沒有,可以通過touch authorized_keys創建此文件。
Authorized_keys創建完成後,將gitClient_01上拷貝過來的公鑰id_rsa.pub的內容追加到authroized_keys中,注意是追加到此文件中,可以使用命令cat /home/git/id_rsa.pub>>/home/git/.ssh/authorized_keys.
以上內容完成後,我們在gitClient_01中,可以使用命令ssh gitServer即可完成無密碼登陸。
4、安裝Git
通過命令 sudo apt-get install git-core,安裝git
5、建立git倉庫的存儲目錄。
6、初始化伺服器端倉庫
使用命令 git –bare init /home/git/myRep.git,初始化化倉庫
7、在gitClient_01上,通過git clone命令進行克隆遠程倉庫,並在各自的電腦上運行開發。
Git clone git@gitServer:/home/git/myRep.git
D. windows 上怎麼搭建git伺服器
安裝msysgit
安裝步驟此處略去。
安裝CopSSH
安裝步驟此處略去。
修改配置
修改CopSSH配置文件C:\Program Files\ICW\etc\sshd_config,確保如下行為非注釋行,且設置為「no」:
生成用戶帳號
1在伺服器上生成Windows用戶,取消用戶下次登錄時須更改密碼,設置密碼永不過期:
2將該用戶隸屬於GitUser組(如尚未生成改組,則先生成改組):
激活用戶
1在Windows啟動程序組中,運行如下程序(C:\Program Files\ICW\bin\ copsshcp.exe):
2進入COPSSH ControlPanel應用對話框,正常情況下服務應該為正在運行(圖標為綠色,如為紅色,則可嘗試點選該按鈕,啟動該服務):
3選擇Users頁面:
4點選Add按鈕,出現如下導航對話框:
5選擇Forward按鈕,出現如下頁面,選擇欲激活的用戶對應的域名及用戶名:
6選擇Forward按鈕,進入如下頁面,選擇Linuxshell and Sftp,所有選項選中:
7選擇Forward按鈕,進入確認頁面,選擇Apply:
8回到如下頁面,選擇Apply後,關閉。
公鑰文件上傳
1從用戶處取得對應帳戶的公鑰文件authorized_keys,復制到C:\ProgramFiles\ICW\home\ricky\.ssh目錄下(\ricky\是對應的用戶名);
2Windows啟動程序組中運行Start a UnixBASH Shell(或Windows運行中運行命令:"C:\Program Files\ICW\bin\bash.exe" --login -i):
3運行如下unix命令行,如運行未出錯,則完畢。
生成Git庫容器目錄
1在伺服器硬碟上生成一個目錄,用來容納Git庫,比如生成E:\ GITTestRepo\目錄;
2滑鼠右鍵點擊該目錄,選擇共享和安全…;
3在彈出的該目錄屬性對話框的安全頁中加入用戶對應的組GitUser;
4確認該用戶組許可權設置了允許修改、讀取和運行、列入文件夾目錄、讀取、寫入,選擇確定後完畢。
確認防火牆開放了22埠
確認伺服器的防火牆沒有禁止22埠的TCP/IP通信。
修改用戶登錄運行腳本
1修改C:\ProgramFiles\ICW\home\ricky\.bashrc文件(\ricky\是對應的用戶名),在文件最後加入如下行:
E. 如何將git伺服器提供給其他人使用
1. 架設Git伺服器
我們以Ubuntu為例。首先,在git伺服器上創建一個名為 'git' 的用戶,並為其創建一個.ssh 目錄。並將其許可權設置為僅git用戶有讀寫許可權
$ sudo adser git
$ su git
$ cd
$ mkdir .ssh
$ chmod 700 .ssh
接下來,把開發者的 SSH 公鑰添加到這個用戶的 authorized_keys 文件中。假設你通過電郵收到了幾個公鑰並存到了臨時文件里。重復一下,公鑰大致看起來是這個樣子:
$ cat /tmp/id_rsa.john.pub
ssh-rsa /ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17//5zytK6Ztg3RPKK+4k
Ez
/nLF6JLtPofwFBlgc+myiv
Pq
dAv8JggJICUvax2T9va5 gsg-keypair
只要把它們逐個追加到 authorized_keys 文件尾部即可,同時將authorized_keys設置為僅git用戶有讀寫許可權。
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
現在可以用 --bare 選項運行 git init 來建立一個裸倉庫,這會初始化一個不包含工作目錄的倉庫。
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init
這時,Join,Josie 或者 Jessica 就可以把它加為遠程倉庫,推送一個分支,從而把第一個版本的項目文件上傳到倉庫里了。值得注意的是,每次添加一個新項目都需要通過 shell 登入主機並創建一個裸倉庫目錄。我們不妨以 gitserver 作為 git 用戶及項目倉庫所在的主機名。如果在網路內部運行該主機,並在 DNS 中設定 gitserver 指向該主機,那麼以下這些命令都是可用的:
# 在 John 的電腦上
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master
這樣,其他人的克隆和推送也一樣變得很簡單:
$ git clone git@gitserver:/opt/git/project.git
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
用這個方法可以很快捷地為少數幾個開發者架設一個可讀寫的 Git 服務。
作為一個額外的防範措施,你可以用 Git 自帶的 git-shell 工具限制 git 用戶的活動范圍。只要把它設為 git 用戶登入的 shell,那麼該用戶就無法使用普通的 bash 或者 csh 什麼的 shell 程序。編輯/etc/passwd 文件:
$ sudo vim /etc/passwd
在文件末尾,你應該能找到類似這樣的行:
git:x:1000:1000::/home/git:/bin/sh
把 bin/sh 改為 /usr/bin/git-shell (或者用 which git-shell 查看它的實際安裝路徑)。該行修改後的樣子如下:
git:x:1000:1000::/home/git:/usr/bin/git-shell
現在 git 用戶只能用 SSH 連接來推送和獲取 Git 倉庫,而不能直接使用主機 shell。嘗試普通 SSH 登錄的話,會看到下面這樣的拒絕信息:
$ ssh git@gitserver
fatal: What do you think I am? A shell?
Connection to gitserver closed.
這里提供的方法,組內所有成員對project都有讀寫許可權,也就是說每個分支都可以push代碼,如果需要更加細致的許可權控制,請使用Gitosis或者Gitolite。
2. 搭建Gitweb
安裝gitweb之後就可以通過網站訪問我們的項目了。就像http://git.kernel.org一樣顯示了
首先需要安裝Gitweb,如果沒有安裝apache,那麼直接安裝Gitweb,也會將apache2安裝的。
$ sudo apt-get install gitweb apache2
安裝完成之後,我們只需要修改一下配置文件,將/etc/gitweb.conf文件中的$projectroot修改為放工程文件的目錄。
$ vim /etc/gitweb.conf
# path to git projects (<project>.git)
$projectroot = "/opt/git";
至此gitweb就可以使用了,現在可以通過http://[git_server_IP]/gitweb訪問了。
3. Push之後發送郵件通知
當組內成員push代碼到伺服器上之後,會自動發送郵件通知組內所有人員,該次push的具體內容是什麼。具體配置方法:
一般在安裝Git的時候發送郵件的腳本/usr/share/git-core/contrib/hooks/post-receive-email已經存在了,首先要修改所有者和執行許可權,並且安裝sendmail。
$ sudo chown git:git post-receive-email
$ sudo chmod 755 post-receive-email
$ sudo apt-get install sendmail
然後到切換到工程目錄下的hooks中,添加 post-receive軟鏈接指向 /usr/share/git-core/contrib/hooks/ post-receive-email。
$ cd /opt/git/project.git/hooks
$ ln -s /usr/share/git-core/contrib/hooks/post-receive-email post-receive
最後修改工程目錄中的config文件即可。mailinglist是郵件列表, envelopesender是發件人的郵箱,
$ vim /opt/git/project.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = true
[hooks]
mailinglist = "[email protected], [email protected]" # 收件人列表
envelopesender = [email protected] # 送件人地址
emailprefix = "[Project commit] " # 郵件標題前綴
showrev = "git show -C %s; echo" # 不只顯示有變化的文件,同時也顯示改變的內容
為了使郵件顯示的更清楚,還要修改一下工程目錄當中的description文件,在description文件中,默認第一行是項目名稱,所以要在第一行填入該項目的名稱,這個在郵件中會有顯示。
$ vim /opt/git/project.git/description
Project_A
F. 怎麼在windows下架設Git伺服器
1、打開控制面板->管理工具->服務項目,禁用Windows防火牆服務。
2、打開控制面板->管理工具,雙擊「路由和遠程訪問」。然後右鍵點擊伺服器圖標,再點擊「配置並啟用路由和遠程訪問」。
3、在「路由和遠程伺服器安裝向導」中,選擇「自定義配置」。
4、勾選「VPN訪問」和「NAT和基本防火牆」。
5、點擊「完成」。系統提示「要開始服務嗎?」,選擇「是」。
6、接下來開始配置路由和遠程訪問,我們先點擊本地服務旁邊的+按鈕,把左側菜單展開,再點擊IP路由選擇旁邊的+按鈕。
7、下面配置靜態IP地址。右鍵點擊本地服務,點擊屬性,再點擊IP選項卡。
8、點選「靜態地址池」,點擊「添加」。輸入一個起始IP地址和結束IP地址范圍,推薦輸入192.168.1.100到192.168.1.254這個范圍,因為192.168段屬於本地保留IP段。最後點擊「確定」。
9、右鍵點擊「靜態路由」,再點擊「新建靜態路由」。
10、目標和網路掩碼都輸入0,網關請和TCP/IP屬性中的默認網關保持一致。
11、刪除「DHCP中繼代理程序」中的「內部」項目。
12、然後右鍵點擊「DHCP中繼代理程序」,再點擊「新增介面」。
13、選擇「本地連接」,再點擊「確定」,然後在彈出的對話框中點擊「確定」。
14、右鍵點擊「NAT/基本防火牆」,再點擊「新增介面」,然後選擇「本地連接」,點擊「確定」。
15、在彈出的對話框中先點選「公共介面連接到Internet」,再勾選「在此介面上啟用NAT」,最後點擊「確定」。
G. linux搭建git遠程倉庫
1. linux和windows端分別安裝git,其中linux中可以用yum安裝
[root@node0~]#yum install git
git的默認安裝路徑在/usr/libexec/git-core
[root@node0 git-core]#cd /usr/libexec/git-core
[root@node0 git-core]#git --version
git version 1.7.1
2.設置linux端git的用戶名和密碼
[root@node0 git-core]# groupadd git
[root@node0 git-core]# useradd wang -g git
[root@node0 git-core]# passwd wang
New password:
3.在伺服器端創建遠程倉庫
[root@node0 ~]# mkdir -p /mnt/gitrep/wjf
[root@node0 ~]# cd /mnt/gitrep/wjf/
[root@node0 wjf]# git init
Initialized empty Git repository in /mnt/gitrep/wjf/.git/
把倉庫所屬用戶改為wang(git的用戶名)
[root@node0 wjf]# chown -R wang:git .git/
註:chown將指定文件的擁有者改為指定的用戶或組 -R處理指定目錄以及其子目錄下的所有文件
4.在windows客戶端克隆倉庫
$ git clone [email protected]:/mnt/gitrep/wjf/.git
Cloning into 'wjf'...
The authenticity of host '192.168.111.60 (192.168.111.60)' can't be established.
RSA key fingerprint is SHA256:MgWCWF************************1m2tI.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.111.60' (RSA) to the list of known hosts.
[email protected]'s password:
第一次連接遠程倉庫,出現黑體部分,這是因為Git使用SSH連接,而SSH連接在第一次驗證GitHub伺服器的Key時,需要你確認GitHub的Key的指紋信息是否真的來自GitHub的伺服器,鍵入yes,然後輸入遠程倉庫的密碼就可以了。
5.實際中也通常通過設置公鑰的方式來連接遠程倉庫,這樣就不用每次連接都需要密碼了。
設置公鑰:
1.在windows客戶端的gitbash中生成用戶私鑰和公鑰
$ ssh-keygen -t rsa -C "[email protected]"
在c盤用戶路徑下的/.ssh文件夾下會生成私鑰id_rsa和公鑰id_rsa.pub
2.linux端
首先 Git伺服器打開RSA認證,即,修改/etc/ssh/sshd_config,將其中的以下三項打開
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然後,將客戶端生成的公鑰給到伺服器端
即,將公鑰給到 home/wang(git的用戶名)/.ssh/authorized_keys
[root@node0 ~]# cd /home/wang
[root@node0 wang]# mkdir .ssh
[root@node0 wang]# chmod 777 .ssh
[root@node0 wang]# touch .ssh/authorized_keys
在windows客戶端的gitbash中 執行:
$ ssh [email protected] 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
然後在linux端:
[root@node0 wang]# chmod 600 .ssh/authorized_keys
[root@node0 wang]# chmod 700 .ssh
[root@node0 wang]# chown wang:git .ssh
[root@node0 wang]# chown wang:git .ssh/authorized_keys
至此,以後再連接遠程倉庫就不需要密碼了。
若仍需要密碼,可以查看ssh連接日誌/var/log/secure:
常見連接失敗原因:Authentication refused: bad ownership or modes for directory /home/wang/.ssh
這時需要檢查該目錄的所屬用戶和讀寫許可權等級是否符合要求。公鑰以及.ssh文件的許可權應該屬於git的用戶和用戶組,讀寫許可權等級.ssh 700,authorized_keys 600.
H. 如何使用centos 搭建git
在很多Linux系統庫中都有Git,可以直接用命令行安裝。
例如Fedora中可以直接用yum install git等,參考如下:
Debian/Ubuntu
$ apt-get install git
Fedora
$ yum install git
Gentoo
$ emerge --ask --verbose dev-vcs/git
Arch Linux
$ pacman -S git
openSUSE
$ zypper install git
FreeBSD
$ cd /usr/ports/devel/git$ make install
Solaris 11 Express
$ pkg install developer/versioning/git
OpenBSD
$ pkg_add git
新版的CentOS後續好像也支持了這個功能,但是這種方法雖然簡單,但是一般倉庫里的版本更新不及時,比如 CentOS 倉庫中的 git 最新版是1.7.1,但是 git 官方已經到2.x 的版本了。對於想要獲取最新git的系統,只能下rpm包或者用源碼。
步驟如下:
1、下載編譯工具
yum groupinstall 「Development Tools」
2、下載依賴包
yum install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel
3、下載 git 最新版本的源代碼
wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
或者
wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.xz
4、解壓源文件
tar -zxvf git-latest.tar.gz
或者
xz -d git-latest.tar.xz
tar -xvf git-latest.tar
5、編譯安裝
autoconf
./configure
make -jn && make -jn install
其中make -j n中的n為指定線程數,對於多核處理器這樣可以加快編譯安裝的速度
6、添加link
ln -s /usr/local/bin/git /usr/bin/
這一步對於原本系統中有舊版git的系統很重要,會報告Link已存在,此時要刪除原來的Link即/usr/bin/git,再執行第六步。
7、檢查版本號
git --version
對於系統中存在老版的git的系統,安裝了新git後用git --version查看仍然顯示為老版就是因為i忽略了第六步,這是很重要的!
I. 怎麼從外網訪問內網git伺服器
外網訪問內網的服務一般有 以下幾種方式:
將 內網伺服器置於DMZ區,這樣內網和外網都能訪問
在DMZ區放置一公共伺服器,通過反向代理的方式訪問
使用VPN接入內網直接訪問