前言
在管理自己的代碼的時候,我一直使用github。有的時候,私有項目不想公開,如果還要放到GitHub上,那就必須要花錢。解決這個問題的方法其實也很簡單:在自己電腦上用虛擬機(VirtualBox)跑一個服務器(CentOS),配置好ssh和git server。正所謂:史上距離你最近的服務器。
配置SSH
SSH是程序員鏈接服務器的居家必備之花露水??!因此在VirtualBox中安裝好CentOS(最小化安裝)后,首要工作就是配置它的SSH。
安裝SSH
- 更新系統:
yum update
- 安裝openssh-server:
yum install -y openssl openssh-server
- 啟動SSH服務:
systemctl start sshd.service
- 設置開機啟動ssh服務:
systemctl enable sshd.service
配置免密登錄
1.在客戶端系統(我的是Mac)終端中生成密鑰:
ssh-keygen -t rsa -C "gitopen@gmail.com"
注意輸入自己的郵箱
2.會提示輸入密碼,但也可以留空(至少我是留空,輸入密碼太麻煩)。
3.完成后會在.ssh
目錄下生成id_rsa
和id_rsa.pub
兩個密鑰文件。
注意保存這兩個文件,哪怕你換了電腦,重做了系統,也要記得備份。
4.查看VirtualBox中CentOS的ip地址:
?運行CentOS,?root用戶登錄?后輸入:
ip addr
如圖所示:5.在客戶端中用ssh連接CentOS:
ssh root@xxx.xxx.xxx.xxx -p 22
xxx.xxx.xxx.xxx是CentOS的ip地址,此時還需要輸入CentOS的root賬戶密碼。?此時?之所用SSH登錄,是為了方便拷貝密鑰到authorized_keys。
6.在VirtualBox中的CentOS
服務器中進行配置:
//創建.ssh文件夾:
mkdir .ssh
//創建authorized_keys文件:
touch .ssh/authorized_keys
//修改authorized_keys的權限:
chmod 600 .ssh/authorized_keys
7.在客戶端(Mac)中查看id_rsa.pub,并復制其中的密鑰。
cat .ssh/id_rsa.pub
8.在CentOS中打開?authorized_keys,將剛才復制的密鑰粘貼進去。
vi .ssh/authorized_keys
9.配置完畢了。
客戶端(Mac)配置CentOS別名
1.為VirtualBox中CentOS的網絡設置端口轉發
設置網絡類型為NAT,如圖所示:
設置端口轉發,如圖所示:
?以上操作是為了在客戶端(Mac)中設置別名登錄的時候,將ip地址寫為127.0.0.1,避免每次啟動CentOS自動獲取ip?的變化,需要修改太麻煩。
2.客戶端(Mac)配置CentOS的別名
vi .ssh/config
輸入以下:
Host cent
HostName 127.0.0.1
User root
Port 4444
cent為別名,可以自由設置。
很方便的連接CentOS
ssh cent
配置和安裝git服務器
所有操作可在客戶機(Mac)上用SSH連接CentOS進行
1.CentOS安裝最新git,依賴庫安裝
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
2.卸載低版本Git
yum remove git
3.創建git目錄并進入
?cd /usr/local
mkdir git
cd git
4.下載最新版Git 2.13.2
wget https://github.com/git/git/archive/v2.13.2.tar.gz
截至目前最新版是2.13.2,可以到https://github.com/git/git/releases 復制最新版鏈接進行下載。
5.解壓到git目錄中
tar -xzvf v2.13.2.tar.gz
6.安裝v2.13.2版Git
cd git-2.13.2
make prefix=/usr/local/git all
make prefix=/usr/local/git install
編譯過程稍微較長,耐心等待
7.添加到環境變量中
打開/etc/profile
vi /etc/profile
加入
export PATH="/usr/local/git/bin:$PATH"
使?配置立即生效
source /etc/profile
8.查看?git版本
git --version
9.將最新版git設置為系統默認,避免克隆時出錯
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
10.最新版v2.13.2 Git安裝成功
創建git用戶組和添加用戶
1.添加用戶組合用戶?,并設置密碼
groupadd git
useradd git -g git
passwd git
切換到git賬戶
su -git
2.證書登錄,免密碼?使用git
創建
.ssh
目錄和.ssh/authorized_keys
文件,將?客戶端(Mac)的id_rsa.pub中的密鑰添加到authorized_keys
文件中
修改目錄和文件的權限
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
初始化Git倉庫
1.我的所有倉庫都放在gitrepos目錄下,因此我創建了這個目錄
cd /home/git
mkdir gitrepos
cd gitrepos
2.初始化第一個test倉庫
git init --bare test.git
本地客戶端克隆倉庫
在客戶端(Mac)上克隆CentOS?上的test.git庫
git clone git@cent:/gitrepos/test.git
cent
是章節2.3中設置的CentOS的SSH連接別名,也可以換成?相應的ip地址
禁止Shell登錄
如果你是在遠程的VPS服務器上配置git服務器,那么為了安全考慮,可以禁止Shell登錄;如果像本文的初衷那樣,是為了構建?
?史上距離你最近的服務器
,那么這一步就可以不做。
切換到root賬戶:
su
編輯/etc/passwd
文件:
vi /etc/passwd
將這一行:
git:x:502:502::/home/git:/bin/bash
替換為:
git:x:502:502::/home/git:/usr/local/git/bin/git-shell
結語
通過用Virtualbox在本機上構建CentOS,方便于開發人員進行測試;通過在CentOS上搭建自己的Git服務器,可以將自己獨立開發的代碼很好的管理與備份。