Linux 安装Git Server
2015-08-07 11:00
603 查看
搭建Git服务器需要准备一台运行Linux的机器, 我用的Centos
2创建一个
3
用git用户登录,创建ssh key 文件夹
3 将本地的ssh pub key 上传到git server上, 比如 /tmp路径下,本地ssh pub key 在 .ssh/id_rsa.pub
4 追加id_rsa.pub 到服务器authorized_keys 里 (git用户下)
5 创建Git仓库
6 本地克隆仓库
7 然后就可以利用source tree 等工具提交代码了。
8 如果服务器ssh端口号不是默认的22,比如是8765,如果用git协议clone,则需要修改本地~/.ssh/config 文件
host $xxx
hostname $xxx
port 8765
(替换$xxx 为ip地址或者域名)
如果用ssh协议clone,则 ssh://$xxx:8675/opt/git/sample.git
如果报错:
那么
9 作为一个额外的防范措施,你可以用 Git 自带的
shell,那么该用户就无法使用普通的 bash 或者 csh 什么的 shell 程序。编辑
在文件末尾,你应该能找到类似这样的行:
把
现在
SSH 连接来推送和获取 Git 仓库,而不能直接使用主机 shell。尝试普通 SSH 登录的话,会看到下面这样的拒绝信息:
推荐阅读:
https://git-scm.com/book/it/v2/Git-on-the-Server-Setting-Up-the-Server
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000
2创建一个
git用户,用来运行
git服务:
sudo adduser git
3
用git用户登录,创建ssh key 文件夹
$ su git $ cd $ mkdir .ssh && chmod 700 .ssh $ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
3 将本地的ssh pub key 上传到git server上, 比如 /tmp路径下,本地ssh pub key 在 .ssh/id_rsa.pub
scp .ssh/id_rsa.pub root@gitserver:/tmp/
4 追加id_rsa.pub 到服务器authorized_keys 里 (git用户下)
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
5 创建Git仓库
cd /opt mkdir git
初始化仓库 sudo git init --bare sample.git
将git仓库owner改为git用户 sudo chown -R git:git sample.git
6 本地克隆仓库
git clone git@gitserver:/opt/git/sample.git
7 然后就可以利用source tree 等工具提交代码了。
8 如果服务器ssh端口号不是默认的22,比如是8765,如果用git协议clone,则需要修改本地~/.ssh/config 文件
host $xxx
hostname $xxx
port 8765
(替换$xxx 为ip地址或者域名)
如果用ssh协议clone,则 ssh://$xxx:8675/opt/git/sample.git
如果报错:
ssh
hostname returns “Bad owner or permissions on ~/.ssh/config”
那么 chmod 600 ~/.ssh/config
9 作为一个额外的防范措施,你可以用 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.
推荐阅读:
https://git-scm.com/book/it/v2/Git-on-the-Server-Setting-Up-the-Server
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git fork同步是什么意思?
- Python的高级Git库 Gittle
- 使用GIT进行源码管理――GUI客户端小结
- 使用git代替FTP部署代码到服务器的例子
- linux系统安装git及git常用命令
- 分享下自己总结的Git常用命令
- Git 常用命令速查表(图文+表格)
- mac git xcrun error active developer path 错误
- git报错