搭建通过 ssh 访问的 Git 服务器

简介:

一、Git - 协议

Git 可以使用四种主要的协议来传输数据:本地传输,ssh 协议,Git 协议和 HTTP 协议。

Git 使用的传输协议中最常见的就是 ssh 了。大多数环境已经支持通过 ssh 对服务器的访问 ,ssh 也是唯一一个同时支持读写操作的网络协议。另外两个网络协议(HTTP 和 Git)通常都是只读的。ssh 同时也是一个验证授权的网络协议;而因为其普遍性,一般架设和使用都很容易。

本文主要介绍如何搭建 ssh 协议的 Git 服务器。

二、在服务器上部署 Git

首先,你需要一台 Linux 器并且拥有 sudo 权限,本文使用的是 Debian 7.0 x32 。下面就开始安装:

2.1 第一步,安装 git :

$ sudo apt-get install git

2.2 第二步,创建一个 git 用户,用来运行 git 服务:

$ sudo adduser git

2.3 第三步,设置访问权限:

有几个办法可以让团队的每个成员都有访问权:

  1. 给每个人建立一个账户。反复使用 adduser 并给所有人设定临时密码比较麻烦。

  2. 在服务器上建立一个 Git 账户,让每个需要写权限的人发送一个 ssh 公钥,然后将其加入 Git 账户的 ~/.ssh/authorized_keys 文件。这样,所有人都将通过 Git 账户访问主机。

  3. 另一个办法是让 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

2.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 登录的话,会被拒绝登录。

2.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

2.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 之旅了。










本文转自 h2appy  51CTO博客,原文链接:http://blog.51cto.com/h2appy/1695859,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
163 0
|
1月前
|
弹性计算 缓存 测试技术
阿里云ECS云服务器2核4G能支持多少人同时访问?2核4G5M并发量评测
阿里云ECS云服务器2核4G能支持多少人同时访问?2核4G5M并发量评测,2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
4天前
|
存储 网络协议 Linux
如何使用内网穿透工具实现远程SSH访问Deepin系统
如何使用内网穿透工具实现远程SSH访问Deepin系统
|
1月前
|
JavaScript 前端开发 应用服务中间件
通过域名的方式访问服务器里的资源
通过域名的方式访问服务器里的资源
24 0
|
1月前
|
弹性计算 小程序 开发者
阿里云服务器性能测评:25M带宽阿里云云服务器支持多少人访问?
在深入探讨25M带宽云服务器的性能时,我们首先要明确一个核心概念:带宽与服务器能够支持的同时访问量之间存在着直接的关联。那么,大家可能会好奇,带宽为25M的云服务器究竟能够支持多少用户同时访问呢?
126 0
|
1月前
|
存储 网络协议 安全
如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!
如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!
|
1月前
|
Windows
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
56 2
|
1月前
|
弹性计算 缓存 测试技术
2核4g服务器能支持多少人访问?阿里云2核4G服务器并发数测试
2核4g服务器能支持多少人访问?阿里云2核4G服务器并发数测试,2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
1月前
|
弹性计算 缓存 测试技术
阿里云2核4g服务器能支持多少人访问?多少钱?
阿里云2核4g服务器能支持多少人访问?多少钱?阿里云2核4g服务器能支持多少人访问?2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
1月前
|
存储 安全 网络安全
Git 安全远程访问:SSH 密钥对生成、添加和连接步骤解析
SSH(Secure Shell)是一种用于安全远程访问的协议,它提供了加密通信和身份验证机制。在使用 SSH 连接到远程 Git 存储库时,您可以使用 SSH 密钥对来确保安全性。以下是关于如何生成和使用 SSH 密钥对的详细步骤: 生成 SSH 密钥对
102 2