搭建通过 ssh 访问的 Git 服务器
一、Git 协议
Git 可以使用四种主要的协议来传输数据:本地传输,ssh 协议,Git 协议和 HTTP 协议。
Git 使用的传输协议中最常见的就是 ssh 了。大多数环境已经支持通过 ssh 对服务器的访问 ,ssh 也是唯一一个同时支持读写操作的网络协议。另外两个网络协议(HTTP 和 Git)通常都是只读的。ssh 同时也是一个验证授权的网络协议;而因为其普遍性,一般架设和使用都很容易。
本文主要介绍如何搭建 ssh 协议的 Git 服务器。
二、在服务器上部署 Git
首先,你需要一台 Linux 器并且拥有 sudo 权限,下面就开始安装:
1 安装 git
$ sudo apt-get install git
2 创建一个 git 用户,用来运行 git 服务
$ sudo adduser git
3 设置访问权限
有几个办法可以让团队的每个成员都有访问权:
- 给每个人建立一个账户。反复使用 adduser 并给所有人设定临时密码比较麻烦。
- 在服务器上建立一个 Git 账户,让每个需要写权限的人发送一个 ssh 公钥,然后将其加入 Git 账户的 ~/.ssh/authorized_keys 文件。这样,所有人都将通过 Git 账户访问主机。
- 另一个办法是让 ssh 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。
这里我们使用第二种方法,收集所有需要登录该 Git 服务器用户的公钥,就是他们自己的 id_rsa.pub 文件,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件里,每行一个。(注意:/home/git/.ssh/authorized_keys 这个文件的 owner 为 Git ,如果不是请使用 chown 命令修改)。
下面是创建公钥命令:
$ ssh-keygen -t rsa -C 'your email@domain.com'
-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱
关于创建公钥的详细信息,可以参考 http://github.com/guides/providing-your-ssh-key。
4 禁用 shell 登录
出于安全考虑,你可以用 Git 自带的 git-shell 工具限制 git 用户的活动范围。这可以通过编辑 /etc/passwd 文件完成。找到类似下面的一行:
把 bin/sh 改为 /usr/bin/git-shell (或者用 which git-shell 查看它的实际安装路径)
git:x:1003:1003:,,,:/home/git:/bin/bash
改为:
git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell
现在 git 用户只能用 ssh 连接来推送和获取 Git 仓库,而不能直接使用服务器的 shell。尝试普通 ssh 登录的话,会被拒绝登录。
5 初始化Git仓库
选定一个目录作为 Git 仓库,如 /home/git/project.git ,在 /home/git/ 目录下输入命令:
$ sudo git init --bare project.git
Git 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的 Git 仓库是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的 Git 仓库通常都以 .git 结尾。然后,把 project.git 的 owner 改为 git :
$ sudo chown -R git:git project.git
6 克隆远程仓库
ssh 指定私钥的配置管理,为本地添加 ssh 别名,编辑 ~/.ssh/config ,如果没有该文件,创建一个:
$ vi ~/.ssh/config
在 config 中添加:
# 注释说明
Host 别名
HostName 域名或 ip
User 登陆服务器用的账号
Port 端口号(默认22,可以不填,如果服务器修改了 ssh 登录端口号,此处需要修改)
IdentityFile 密钥文件的位置
例如设置为:
# bingdian's git server
Host gitserver
HostName 162.188.23.33
User git
Port 9000
IdentityFile ~/.ssh/server_rsa
现在,可以通过 git clone 命令克隆远程仓库了:
$ git clone ssh://git@gitserver:/home/git/project.git
接下来你就可以享受你的 Git 之旅了。
扩展阅读
- http://git-scm.com/book/zh/服务器上的-Git-协议
- Custom identity file (id_rsa.pub) with git client
- Git config for mutiply ssh keys
搭建通过 ssh 访问的 Git 服务器的更多相关文章
- cygwin + git + nat123 30元搭建公网可访问的git服务器
首先参考上一篇安装服务器上的CYGWIN: http://jingyan.baidu.com/article/7e440953eabd742fc0e2efae.html 上一篇中已经加入了GIT相关的 ...
- linux git server 简易搭建 (ssh访问)
git的服务器搭建,如果无需权限控制,仅团队内部使用,初始化一个服务器仓库,其他人通过ssh访问这个文件夹即可.如需复杂的管理,建议使用gitlab. yum install git -y id gi ...
- debian下使用gitosis+gitweb搭建SSH认证的git服务器
搭建完成Git服务器后,需要使用两台机器进行测试,一台机器作为服务器端server,一台服务器作为客户端client.整个系统,需要三个计算机账户,这里假设server端的账户名为git,client ...
- Mac下使用终端连接远程使用ssh协议的git服务器
最近换了台新电脑, MacBook pro,拿到新电脑之后小小心喜了一下(终于解脱windows的束缚拥抱mac啦), 然后就开始苦逼的安装各种开发环境了. 之前在windows上使用tortoise ...
- SSH方式连接Git服务器需要注意的地方
如何安装Git?这个我这里就不再多说了,想要了解的可以自行百度,以下文字是基于本地Git安装OK,且Git服务器可用的情况下,我的Git是GitLab 接下来开始操作 1:首先在本地生成私钥和公钥,这 ...
- 搭建无限制权限的简单git服务器使用git-daemon脚本
如果想要用ubantu架设无限制权限(即不适用gitosis)的简单git服务器,实现git库下载clone,push等简单的基本功能, 可以直接使用git-daemon脚本(非常不安全,建议项目代码 ...
- 一款易搭建,运行快的Git服务器:Gitea安装教程
说明:Gitea是从Gogs发展而来,同样的拥有极易安装,运行快速的特点,而且更新比Gogs频繁很多,维护的人也多,个人认为Gitea还是更好一些的,这里就说下安装方法. 截图 简介 Gitea是一个 ...
- 基于阿里云服务器的git服务器搭建
使用阿里云Ubuntu 12.0.4 64位操作系统做git服务器. 首先git服务器有两种访问方式可以选择:http方式和ssh的方式,http方式更容易使用. 1.http方式的git服务器搭建以 ...
- 在服务器搭建git服务器
服务端操作 安装Git及创建用户组.用户 123 yum install gitgroupadd gitadduser git -g git 禁止用户git登录 修改/etc/passwd文件: 找到 ...
随机推荐
- MonoGame 3.2 下,截屏与 Texture2D 的保存
10月20日注:后来发现了这篇博文(英文),XNA 中的 Color 实际上是与 Alpha 值自左乘(premultiplied)的,这也解释了直接用 0xARGB 转译而颜色异常的原因. 注意,由 ...
- 通过SQL Server自定义数据类型实现导入数据
写在前面 在看同事写的代码时看到了SQL Server中可以自定义数据类型,而且定义的是DataTable类型的数据类型. 后我想起了以前我们导入数据时要么是循环insert写入,要么是SqlBulk ...
- Solr学习总结(三)Solr web 管理后台
前面讲到了Solr的安装,按道理,这次应该讲讲.net与数据库的内容,C#如何操作Solr索引等.不过我还是想先讲一些基础的内容,比如solr查询参数如何使用,各个参数都代表什么意思? 还有solr ...
- Moon.Orm 5.0 (MQL版) 实际开发实例Demo
http://www.cnblogs.com/humble/p/4593133.html (文章新地址) http://www.cnblogs.com/humble/p/4593133.html ...
- PPT里面添加3Dvia Composer Player 控件
本实例是Office 2013 版本 1打开文件-选项---自定义功能区--主选项卡 ---开发工具 :如图 4然后将在菜单栏里面看到 开发工具 5然后将出出一个十字 绘制你想要的区域 6 鼠标右击 ...
- js用户管理中心tab切换界面模板
效果体验:http://hovertree.com/texiao/js/27/ 效果图如下: 代码如下: <!DOCTYPE html> <html> <head> ...
- 基于.net mvc 的供应链管理系统(YB-SCM)开发随笔
作为园子里的伪新人,经常拜读众位大牛的帖子,一直有写点东西的想法. 今天终于下定决心去写这个系统的开发过程,由于本人文笔有限,不足之处多多海涵.
- OneThink-nav标签
/* 导航列表 */ public function _nav($tag, $content){ trace($tag); trace($content); trace("end" ...
- Java--通过Spring AOP进行事务管理
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Https网站搭建——通过https://localhost:8443访问tomcat首页
图片大致介绍了Https浏览器与服务器握手的过程,涉及到的名词:证书.Hash算法.随机数密码.公钥加密.私钥解密.握手消息.hash验证.摘要 tomcat服务器配置可以实现https双向认证,简单 ...