18910140161

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

顺晟科技

2021-06-16 10:59:34

182

一、Git - 协议

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

Git最常用的传输协议是ssh。大多数环境已经支持通过ssh访问服务器,ssh是支持读写操作的网络协议。另外两种网络协议(HTTP和Git)通常是只读的。Ssh也是一种验证授权的网络协议。由于它的通用性,很容易架设和使用。

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

二、在服务器上部署 Git

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

2.1 步,安装 git :

$ sudo apt-get install git

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

$ sudo adduser git

2.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是git的所有者,如果不是,请使用chown命令修改它。).

以下是创建公钥命令:

$ ssh-key gen-t RSA-C ' you email @ domain.com '

-t指定密钥类型,默认情况下是rsa,可以省略

-设置注释文本,如您的电子邮件地址

有关创建公钥的更多信息,请参考http://github.com/guides/providing-your-ssh-key.

2.4 第四步,禁用 shell 登录:

出于安全原因,您可以使用git附带的git-shell工具来限制git用户的活动范围。这可以通过编辑/etc/passwd文件来完成。找到类似以下内容的行:

将bin/sh改为/usr/bin/git-shell(或者使用哪个git-shell来查看其实际安装路径)

git : x :100:1003:/home/git:/bin/bash

替换为:

git : x :100:1003:/home/git :/usr/bin/git-shell

现在git用户只能使用ssh连接推送获取Git资源库,不能直接使用服务器的shell。如果您尝试正常ssh登录,您将被拒绝登录。

2.5 第五步,初始化Git仓库:

选择一个目录作为Git仓库,如/home/git/project.git,在/home/git/directory下输入命令:

$ sudo git init - bare project.git

Git会创建一个空仓库,没有工作空间。因为服务器上的Git仓库是为了共享,所以不允许用户直接登录服务器改变工作空间,服务器上的Git仓库通常以。蠢货。然后,将project.git的所有者改为git:

$ sudo chown -R git:git项目. git

2.6 第六步,克隆远程仓库:

Ssh指定私钥的配置管理,为本地添加ssh别名,编辑~/。ssh/config,如果没有这样的文件,则创建一个:

$ vi ~/。ssh/配置

添加配置:

#请注意主机别名HostName域名或用户登录服务器时使用的帐户端口号(默认值为22,可以留空,但如果服务器修改ssh登录端口号,则需要在此处修改)。标识文件密钥文件的位置

例如,设置为:

# bingdian的git server host git server hostname 162 . 188 . 23 . 33用户gitPort 9000IdentityFile ~/。ssh/server_rsa

现在,您可以通过git clone命令克隆远程仓库:

$ git clone ssh ://git @ gitserver :/home/git/project . git

然后你可以享受你的Git之旅。

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航