赞
踩
最近因为在自己的项目中用到版本管理工具,经比较后确定用git作为服务端,参考了网上很多资料,但由于自己经验的原因,其中也走了一些弯路,因此觉得有必要把整个配置过程记录下来,以便下次在其它地方部署,以及后面添加新用户时可以高效率的完成,但由于参考的内容方面较为零散,没有一 一指出,在此先谢过相关文章。
git服务端:
yum install git
这一步较简单,通常也不会出什么问题,如果有问题也很容易就能搜索到相应的解决方案。
由于这个用户主要用户访问git仓库,有别于一般用户,因此把这个用户的主目录设置在/var下面,
- [root@node2 var]#mkdir git
- [root@node2 var]#useradd -d /var/git
- #设置用户密码
- [root@node2 var]#passwd 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
到这一步,一个数据仓库就配置完成了,数据仓库的地址为: git@ip:myproject.git, 用户名即为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 bash客户端中,输入以下命令创建密钥:
$ssh-keygen -t rsa, 在后面出现的提示中一路回车即可,即默认的位置生成公私密钥,且密钥不设密码。此时, C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub,这两个文件分别为对应的私钥和公钥。公钥需要拷贝的服务器的对应的目录下
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客户端都可以免密码的登录仓库了。完整操作实现一遍后再回过来看看整个过程也不复杂,但主要是开始没有明白不同的客户端还需要针对性的设置,导致以为是服务器的配置问题而花了一定的时间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。