发布于 2014-12-02 01:19:19 UEANER

系统环境:

  • CentOS 6.6 x86_64
  • 服务端 IP:192.168.2.45

本文针对 git 的 SSH 协议,搭建远程服务。与创建一个普通用户,通过 SSH 协议授权访问的操作思路完全一致, 只不过服务端与客户端在操作项目时都使用 git 而已,服务搭建十分简单。当然更多更详细的配置还是要看 git 手册。

安装 git

# yum install git

添加 git 用户

用户名可以随便起,我这里创建一个以 git 为名称的用户:

# adduser git

禁止 git 用户登录,修改 /etc/passwd 文件,将:

git:x:501:501::/home/git:/bin/bash

改为:

git:x:501:501::/home/git:/usr/bin/git-shell

如果你创建的是其他的用户名,修改对应用户名的登录方式为 /usr/bin/git-shell

授权访问

免密码访问:收集客户端的 id_rsa.pub 公钥,追加到 /home/git/.ssh/authorized_keys

# cat /path/to/some_client/id_rsa.pub >> /home/git/.ssh/authorized_keys

如果客户端有 root 权限或有 /home/git 目录的写权限可以使用:

# ssh user@server 'mkdir -p /home/git/.ssh && cat >> /home/git/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

使用密码访问

# passwd git
输入你想要设置的密码

如果你创建的是其他的用户名,修改对应用户名的密码。

创建 git 项目

假定我们将 git 项目统一放在 /opt/gitproj 目录下:

# mkdir -p /opt/gitproj

创建项目:

# cd /opt/gitproj/
# git init --bare sample.git

修改权限:

# chown -R git:git sample.git

我们先在本地克隆一份,后面在客户端提交文件时,可以在此处拉取验证:

# cd /tmp/
# git clone /opt/gitproj/sample.git/
Initialized empty Git repository in /tmp/sample/.git/
warning: You appear to have cloned an empty repository.

如果你只有一台服务器,git 服务和 web 服务都在上面,那么你可以考虑选择这种方法。

验证

客户端

$ git clone git@192.168.2.45:/opt/gitproj/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

$ cd sample/
$ echo 'first commit' > 1.txt
$ git add 1.txt
$ git commit -am 'update'
$ git push
Counting objects: 3, done.
Writing objects: 100% (3/3), 220 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.2.45:/opt/gitproj/sample.git
 * [new branch]      master -> master

如果出现 fatal: The remote end hung up unexpectedly 错误,使用 git push origin master 推送。

转到 服务端

现在我们到 /tmp/sample/ 目录下拉取最新提交的文件,验证一下:

# cd /tmp/sample/
# git pull
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /opt/gitproj/sample
 * [new branch]      master     -> origin/master

# cat 1.txt
first commit

到此我们的 git 服务就搭建完毕了,很简单那。

参考

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000
http://git-scm.com/book/zh/v1/服务器上的-Git-协议
http://git-scm.com/book/zh/v1/服务器上的-Git-架设服务器
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
转载请注明出处。
本文地址:http://blog.aboutc.net/linux/71/git-remote-services-to-build-under-linux

评论:0

关闭高亮高亮 分享到新浪微博分享到新浪微博