搭建通过 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 protected]‘

-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://[email protected]:/home/git/project.git

接下来你就可以享受你的 Git 之旅了。

扩展阅读

时间: 2024-12-28 19:59:43

搭建通过 ssh 访问的 Git 服务器的相关文章

cygwin + git + nat123 30元搭建公网可访问的git服务器

首先参考上一篇安装服务器上的CYGWIN: http://jingyan.baidu.com/article/7e440953eabd742fc0e2efae.html 上一篇中已经加入了GIT相关的包,这里就不再赘述. 然后添加git用户,在CYGWIN客户端输入: net user git 123 /add 一般只是GIT用户用的话不需要加入管理员组. 随后切换windows用户,使用git用户登录,启动一次cygwin这时cygwin会自动创建用户的个人目录/home/git/以及更新其他

lanproxy可支持任何 tcp 上层协议(ssh 访问、web 服务器访问、远程桌面...)

lanproxy 是一个将局域网个人电脑.服务器代理到公网的工具,目前仅支持 tcp 流量转发,可支持任何 tcp 上层协议(ssh 访问.web 服务器访问.远程桌面...).与目前市面上的花生壳.TeamView.GoToMyCloud 等等类似,但胜在开源,不受限制. 作者:@小飞 地址:http://git.oschina.net/fengfei/lanproxy http://www.oschina.net/news/80909/2016-oschina-git-top-50

centos6.5 Open×××服务搭建部署,访问内网服务器

centos6.5 Open×××服务搭建部署,访问内网服务器 1 简介 ×××(Virtual Private Network)直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道. ? ? Open×××无疑是Linux下开源×××的先锋,提供了良好的性能和友好的用户GUI.该软件最早由James Yonan编写.Open×××允许参与建立×××的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证.它大量使用了OpenSSL加密库,以及SSLv3/TLSv1

debian下使用gitosis+gitweb搭建SSH认证的git服务器

搭建完成Git服务器后,需要使用两台机器进行测试,一台机器作为服务器端server,一台服务器作为客户端client.整个系统,需要三个计算机账户,这里假设server端的账户名为git,client端需要一个管理员gitadmin,一个开发者gituser.这里的环境,使用两台处于同一局域网内的两台机器作为server以及client,其中server端系统为debian 6,client端为fedora 16.1    建立server端账户git,用于安装git相关的服务. sudo us

基于阿里云服务器的git服务器搭建

使用阿里云Ubuntu 12.0.4 64位操作系统做git服务器. 首先git服务器有两种访问方式可以选择:http方式和ssh的方式,http方式更容易使用. 1.http方式的git服务器搭建以及使用git命令行访问: On the Server 1) Install Ubuntu Server, this is the base of our git server obviously  2) Now we need to install a couple of packages, the

搭建一个git服务器

12 December 2018 by Rango 需求 搭建一个git服务器,没有github的存储空间限制,同时仓库是私有的. 设备 一台本地电脑(linux 系统) 一台服务器(linux 系统) 步骤 步骤主要根据以下链接整理: 搭建属于你自己的 Git 服务器 忽略特殊文件 搭建Git服务器 1.安装git到服务器上 $ sudo apt install git 2.创建一个git用户,用来运行服务器 $ sudo adduser git 2.创建证书登录 收集所有需要登录的用户的公钥

在CentOS搭建Git服务器 转

在CentOS搭建Git服务器 来自 :http://www.jianshu.com/p/69ea5ded3ede 前言 我们可以GitHub发布一些开源代码的公共仓库,但对于私密仓库就需要收费了.公司内部通常会搭建自己的Git服务器,我也通过在自己的服务器上搭建练习一下. 开始前先说一下服务器信息,这里是阿里云的CentOS 6.5 64位操作系统. 一 确认服务器是否安装Git [[email protected] git]# rpm -qa gitgit-1.7.1-3.el6_4.1.x

centos 下git服务器搭建

准备 CentOS Linux release 7.0.1406 (Core) ssh 22端口 http 80端口 本文主要是ssh协议支持,http协议配置后还有问题. 摘抄的一段说明 SSH 协议 架设 Git 服务器时常用 SSH 协议作为传输协议. 因为大多数环境下已经支持通过 SSH 访问 —— 即时没有也比较很容易架设. SSH 协议也是一个验证授权的网络协议:并且,因为其普遍性,架设和使用都很容易. 通过 SSH 协议克隆版本库,你可以指定一个 ssh:// 的 URL: $ g

使用frp通过ssh访问公司内网机器

https://github.com/fatedier/frp/ github地址(具有中文文档)从Release页面下载安装包本次是使用frp_0.20.0_linux_amd64.tar.gz版本通过SSH访问公司内网服务器1,将frp_0.20.0_linux_amd64.tar.gz解开后的 frps 及 frps.ini 放到具有公网 IP 的机器上. # frps.ini [common] bind_addr=0.0.0.0 //本地IP bind_port = 7000 //绑定本