Git | CentOS 7搭建git服務端

大多數狀況下咱們使用github託管,特別是私庫免費之後,可是github被黑也會有宕機的時候,那怎麼辦呀,就是喜歡用git呀,特別是微信小程序的官方編輯器用svn時代碼顏色不更改呀(不知道版本更新後是否支持),都不知道改了哪行~?這個時候咱們能夠考慮在私有服務器搭建git服務端。git

安裝

目前經過yum -y install git安裝的git版本爲 1.8.3.1。github

1565083693.jpg

可是官方git倉庫的最新版目前是2.9.5shell

1565083864.jpg

想要安裝最新版的git只能下載壓縮的源碼包安裝。小程序

# 查看原來是否有git的相關包
rpm -qa|grep git
# 可能的結果爲 git-1.8.3.1-20.el7.x86_64
# 刪除git包
rpm -e perl-Git
rpm -e git

# 安裝依賴
yum install curl-devel expat-devel openssl-devel zlib-devel

# 下載2.9.5版本壓縮包 soft爲自建目錄
cd /usr/local/soft
wget  https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz

# 解壓
tar -xzvf git-2.9.5.tar.gz

# 編譯安裝
cd git-2.9.5
make prefix=/usr/local all
make prefix=/usr/local install

當前可經過 ./git --version查看微信小程序

1565086093.jpg

配置環境變量緩存

vi /etc/profile在最後加入export PATH=/usr/local/soft/git-2.9.5:$PATH安全

vi /etc/profile

i

最後加入export PATH=/usr/local/soft/git-2.9.5:$PATH

Esc :wq

# 生效環境變量
source /etc/profile

至此安裝結束,而後就能夠愉快的處處使用啦~bash

添加管理git的用戶

# 建立用戶git
useradd git

# 修改用戶git的密碼(要求>8個字符)輸入兩遍新密碼
passwd git

經過cd /home && ls -al能夠看見用戶已經建立成功服務器

1565087656.jpg

使用git

日常在使用別人的輪子時都是直接使用git clone [https url]到本地,可是咱們本身的項目管理時,還可使用ssh的方式。這兩種方式的區別在於https的pull和push時須要輸入密碼,使用ssh的須要先配置和添加好SSH key就不用每次操做輸入密碼啦~微信

服務端建立倉庫示例

su git

mkdir sunflowercoder-blog.git

cd sunflowercoder-blog.git

git init --bare

能夠看見在/home/git/sunflowercoder-blog.git目錄下已經初始化了一個空的git項目

1568793618.jpg

沒安裝git客戶端的,自行先去官網下載安裝。

客戶端使用http訪問

當前的狀況下,已是可使用http訪問啦。
客戶端使用http示例

# 克隆項目
git clone git@[服務端ip地址]:/home/git/sunflowercoder-blog.git

輸入git用戶的密碼後,等待傳輸結束便可。

1568793970.jpg

建立README.md,上傳到服務器,並查看日誌。

cd sunflowercoder-blog

# 建立README.md
touch README.md

# 提交到緩存
git commit -m "初始化README.md"

# 上傳服務端
git push origin master

# 等待傳輸完成  查看日誌
git log

1568795447.jpg

客戶端使用ssh訪問

使用ssh訪問稍稍麻煩一點,須要先生成ssh公鑰。

建立git使用者(已經建立的忽略這一步)

git config --global user.name "[用戶名]"
git config --global user.email "[郵箱]"

git config --list --global

能夠看見已經設置的全局變量:

1568796115.jpg

生成ssh公鑰(已經生成的 忽略這一步)

ssh-keygen -t rsa -C "[郵箱]"

一直按回車 Enter,結束後,在提示的C盤的用戶目錄下。

1568796388.jpg

能夠看見.ssh/id_rsa.pub爲咱們須要的公鑰,id_rsa是密鑰,不能告訴任何人哦

1568796473.jpg

服務端配置ssh訪問

默認/etc/ssh/sshd_config中的RSA認證是打開的

RSAAuthentication yes

默認的RSA認證文件爲.ssh/authorized_keys,如在用戶目錄下不存在須要本身建立

su git

cd ~

mkdir .ssh

touch .ssh/authorized_keys

# 默認的目錄權限爲drwxrwxr-x,文件的權限爲-rw-rw-r-- ,安全起見可下降等級
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

公鑰上傳的服務端

能夠手動打開客戶端 .ssh/id_rsa.pub 複製到服務端 .ssh/authorized_keys中,Esc :wq保存退出。

也可使用

ssh git@[服務端地址] 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

1568798235.jpg

至此咱們就能夠愉快的使用ssh訪問啦,不須要密碼驗證。clone時也不須要,以下圖,上面的爲已配置ssh的,下面的爲取消配置的

1568798416.jpg

禁止用戶git經過shell登陸

由於前面配置ssh訪問,因此當前的git帳戶是能夠經過ssh訪問服務器的。

1568798995.jpg

爲了安全起見,禁止客戶端經過shell遠程登陸服務器。切換用戶git,在根目錄下建立git-shell-commands

1565089159.jpg

注意:該目錄爲git shell須要的,否則會報

fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.

修改/etc/passwd文件

# 切換root
su root

# 編輯文件
vi /etc/passwd

i

# 找到git開始的
git:x:1000:1000::/home/git:/bin/bash
# 更改成 
git:x:1000:1000::/home/git:/bin/git-shell

Esc :wq

此時咱們就不用擔憂客戶端經過shell登陸,只容許使用git-shell進行管理git的倉庫。

注意:這種方式適用於開發者較少的狀況,每次增長或刪除用戶時都必須登陸到服務器上去,並且還缺乏必要的權限管理,由於用戶對全部在/home/git下的git項目都擁有讀寫權限。當團隊成員人數達到成百上千時可使用gitosis或者gitolite管理,好像還有自動權限管理的功能~

原文連接

? 更多好文歡迎關注個人公衆號~

公衆號

相關文章
相關標籤/搜索