系统环境:
- 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。
一 、
设置Git的user name和email:
$ git config --global user.name "xuhaiyan"
$ git config --global user.email "[email protected]"
二、生成SSH密钥过程:
1.查看是否已经有了ssh密钥:cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
2.生存密钥:
$ ssh-keygen -t rsa -C “h[email protected]”
按3个回车,密码为空。Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
………………
最后得到了两个文件:id_rsa和id_rsa.pub
授权访问
免密码访问:收集客户端的 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 [email protected] ‘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 [email protected].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 [email protected].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