引言

     最近因为在自己的项目中用到版本管理工具,经比较后确定用git作为服务端,参考了网上很多资料,但由于自己经验的原因,其中也走了一些弯路,因此觉得有必要把整个配置过程记录下来,以便下次在其它地方部署,以及后面添加新用户时可以高效率的完成,但由于参考的内容方面较为零散,没有一 一指出,在此先谢过相关文章。

一、实验环境:

git服务端:

操作系统: CentOS Linux 7.4git服务器: 版本1.8.3

二、Git服务端安装:

1.  采用yum安装:

yum install git

这一步较简单,通常也不会出什么问题,如果有问题也很容易就能搜索到相应的解决方案。

2  添加访问git数据仓库的用户

    由于这个用户主要用户访问git仓库,有别于一般用户,因此把这个用户的主目录设置在/var下面,

 [root@node2 var]#mkdir   git [root@node2 var]#useradd -d  /var/git  #设置用户密码 [root@node2 var]#passwd git

3  创建数据仓库 myproject.git

   这里创建数据仓库myproject.git用于存放工程代码,同时设置其权限为git用户和git组。

 [root@node2 git]#mkdir myproject.git [root@node2 git]# git init --bare myproject.git [root@node2 git]# chown -R git.git myproject.git

4. 数据仓库创建完成

    到这一步,一个数据仓库就配置完成了,数据仓库的地址为: git@ip:myproject.git, 用户名即为git,密码就是该用户对应的密码。

5. 客户端git的安装

    下载Git for windows,   地址:https://gitforwindows.org/Git for Windows,写此博文的时候版本时2.40.1, 我这里用的是之前安装好的版本2.38.1. 找到windows 下安装git的程序组,点击git bash, 如下图所示:

 切换到想clone工程的目录, $ git clone git@ip:/var/git/myproject.git    (ip和工程名用自己实际的ip和工程名即可),由于本机已配置好免密登录,因此这里没有相关截图。如果没有配置好的话根据提示输入相关的信息即可登录下载。

三、Git免密码登录:

    Git服务器的配置过程相对比较顺利,就是后面配置免密码登录时,由于自己对相关原理不熟悉,走了很多弯路,到最后配置好后回头看也是很方便的,也正是基于此,为了避免后面在其它服务器的配置中再走同样的弯路,因此决定把整个配置过程记录下来。

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

    在前面的git bash客户端中,输入以下命令创建密钥:

$ssh-keygen -t rsa, 在后面出现的提示中一路回车即可,即默认的位置生成公私密钥,且密钥不设密码。此时, C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub,这两个文件分别为对应的私钥和公钥。公钥需要拷贝的服务器的对应的目录下

2. 服务器打开RSA认证

   2.1 进入 /etc/ssh 目录,编辑sshd_config, 开启以下三个选项,

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys  (修改默认值为:) %h/.ssh/authorized_keys

其中第一项,如果配置文件里面没有该选项,则可以自行添加进去,第二项是被注释掉了,可以去掉注释,第三项AuthorizedKeyFile,这里配置为不同用户的配置分开存放,  即%h/.ssh/authorized_keys。

2.2 在/var/git下创建目录.ssh

[root@node2 git]# pwd

/var/git

[root@node2 git]#mkdir .ssh

修改.ssh属主为git.git, 设置权限,设置该目录权限为700

[root@node2 git]# chown -R  git.git .ssh

[root@node2 git]#chmod 700 .ssh

[root@node2 git]# ls -ld .ssh drwx------ 3 git git 4096 May 21 11:31 .ssh

2.3 将客户端生成的公钥id_rsa.pub 拷贝到服务器/var/git/.ssh/authorized_keys文件里, 在Git bash中执行如下命令。

$ scp id_rsa.pub git@ip:/var/git/.ssh    (以实际IP替换ip)

在服务器端执行

[root@node2 .ssh]# cat id_rsa.pub > authorized_keys

重启sshd服务器

[root@node2 .ssh]# systemctl restart sshd

到这一步,如果一切正常的话客户端就可以免密码登录操作数据仓库了。但由于自己一直用的是TortoiseGit客户端,开始以为按前面步骤配置好了后TortoiseGit客户端自然也就可以免密码登录了,实际上针对TortoiseGit还需要在客户端设置一下才可以免密码登录。可以参考TortoiseGit 免密码操作,windows 中找到开始菜单,点击Puttygen, 点击load, 选择三(1)中生成的id_ras文件,然后点击save private key,将文件保存为id_rsa.ppk(即需要把之前生成的文件转变成PuTTY能够识别的格式,这一步有个地方要注意,通常我们在保存一个文件时直接输入文件名,扩展名如果没有输入的话自动会添加的,但这里如下图2中,如果没有输入扩展名,则不会输入ppk扩展名,导致把我之前的文件覆盖了。最后不得不重新生成相应的公私密钥。

 四、结束语

     至此,整个配置就结束了,在git bash客户端以及TortoiseGit客户端都可以免密码的登录仓库了。完整操作实现一遍后再回过来看看整个过程也不复杂,但主要是开始没有明白不同的客户端还需要针对性的设置,导致以为是服务器的配置问题而花了一定的时间。

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: