通过ssh验证配置git服务端

原文地址为: 通过ssh验证配置git服务端

以下内容,服务端是Centos7 git 1.8.3 , 客户端是Win10 git 2.5.0

建议熟悉了git的使用再来配置git服务端。

小团队开发,手动配置一个git管理就好。
1.安装git
官网下载地址:http://git-scm.com/download/linux
官网就给了个yum,直接拿来执行吧,自己下载tar还需要一些相关支持,通过yum全帮你搞定,方便 。

$ yum install git

执行安装完成后,可以通过以下命令查看版本

$ git --version

结果
git版本

到此git已经安装完成,现在创建空的仓库/data/git/xxxx.git

cd进入到/data/git目录,执行以下命令初始化git版本库

git init --bare myproject.git

执行结果如下:
git服务器项目

注意init时加–bare参数,服务端没有工作区,是看到不到文件的。

现在要实现通过 git@host:/data/git/myproject.git来提交和更新文件做版本管理。git是用户,host是域名或者你服务器IP,后面就是你刚刚创建的空仓库路径。myproject.git就是个文件夹,记得加上.git,统一规范。

后面就是创建git用户了,其实你用root也可以的,还是规范,每个用户做自己事儿就好。

2.创建git用户

adduser git
passwd git

把上面创建的/data/git/目录的所有者改为git用户。

chown -R git /data/git

先建好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每次一登录就自动退出。

到这一步,已经可以实现代码管理了,只不过每个人都要用git用户push与pull代码,而且每次都需要输入密码,显然不太合理。

下面通过 ssh-keygen生成RSA密钥验证。

3.配置authorized_keys(如果你愿意每次输入密码,这一步可省略)
生成私钥和公钥

$ ssh-keygen -t rsa -C "[email protected]"

生成密钥
执行会让你选择生成目录,设置密码等,一路回车默认设置就好,最后会在系统用户目录看到.ssh文件中有id_rsa和id_rsa.pub,id_rsa是私钥,自己保管,id_rsa.pub是公钥,追加到服务端git用户的.ssh/authorized_keys文件中,如果没有这个文件自行创建。(手动添加实在不方便,后面介绍用ssh-copy-id添加)

已经完成了,重新建立连接,再pull一下试试,看是否还要你密码,以后所有团队成员,每人生成一个RSA密钥添加到authorized_keys就好。


使用ssh-copy-id命令建立信任,省去了向authorized_keys添加公钥的操作。

ssh-copy-id git@192.168.61.128

添加信任

通过git的git-bash.exe,可以执行linux命令,帮我们生成密钥,执行ssh-copy-id等等命令。

备注:
如果你ssh端口不是22,那得用下面命令了

ssh-copy-id "-p 2200 user@host"

以上配置,基本能正常工作了,但还有一些缺陷,有兴趣的可以继续研究。
要方便管理公钥,用Gitosis;
要像SVN那样变态地控制权限,用Gitolite;
要想搞个web界面再装gitweb,需要nginx等搭配;
要做成github那样的系统用gitLab 。

花了两天时间把Gitosis、Gitolite、gitWeb都配置了一遍,然后又看到gitLab,继续折腾。最后发现并没啥用,最基础的就好,不用把时间花在无意义的事情上。。。


转载请注明本文地址: 通过ssh验证配置git服务端

猜你喜欢

转载自blog.csdn.net/wangchaoqi1985/article/details/80841523