Linux下搭建git服务器

  1. 下搭建git服务器

本文内容参考自:

1.https://www.cnblogs.com/dee0912/p/5815267.html

2.https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

搭建环境:

服务器 CentOS7.4 + git(version 1.8.3)

客户端 Windows10 + git(version 2.17.1.windows.2)

一、服务端

1.安装git

yum -y install git

2.查看git版本

git --version

3.创建账户与密码

useradd git // 创建用户

passwd git // 设置密码

4.创建git仓库

a.先选定一个目录作为Git仓库,假定是/git/test.git,在/git目录下输入命令:

gitinit--baretest.git

b.接下来将test.git的owner改为前面创建的git账户

chown -R git:git test.git/

二、客户端

1.首先在本地安装git:https://git-scm.com/downloads

2.安装完成后,创建一个文件夹,如test

然后选中test文件夹,鼠标右键,找到git bash here选项并点击,即可直接打开Git Bash命令窗口

接着输入以下命令,即可从 Linux Git 服务器上 clone 项目:

git clone git@你的服务器地址:/git/test.git

ps:如果SSH用的不是默认的22端口,则需要使用以下的命令(假设SSH端口号是7700):

git clone ssh://git@你的服务器地址:7700/git/test.git

4.当第一次连接到目标 Git 服务器时会得到一个提示,直接输入 yes回车即可

此时 你会发现C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。

5.clone项目时会提示输入密码,直接输入在服务端创建git账号时填写的密码即可。

6.如果不想每次都输入密码,则可参考下面步骤,将验证方式改为 SSH 公钥验证

三、使用SSH公钥验证方式连接git服务器

1.客户端,创建 SSH 公钥和私钥

ssh-keygen-trsa-C "XXXX@XXX.com"

此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub

id_rsa 是私钥

id_rsa.pub 是公钥

2.服务器端,将 Git 打开 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

其中RSAAuthentication yes是我自己加上去的。

修改完成后重启 sshd 服务systemctl restart sshd.service

systemctlrestartsshd.service

由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys

在 /home/git/ 下创建目录.ssh同时将它的owner改为git

3.最后回到客户端,将刚才生成的公钥导入服务器端

ssh git@你的服务器地址 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

这里需要输入一次密码。

ps:如果发现输入密码后,仍显示失败,请确认是否在服务器端禁用了git账户shell登录,如果是,则需要自己手动在服务器端添加公钥

4.最后重新clone项目,已经不需要密码了

ps:如果发现按照以上方法配置后,仍需要输入密码,你优先排除服务端文件权限问题

修改 /home/git 的权限为 700

修改 /home/git/.ssh 目录的权限为 700

修改 /home/git/.ssh/authorized_keys 文件的权限为 600

四、其它

出于安全考虑,我们在服务器端创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

注册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值