最近公司需要搭建一个在Windows环境下的Git服务器,然后在网上搜罗了一大堆教程。
在搭建过程中,出现各种各样的错误,然后就去网上找各种解决办法。不夸张的说,基本上所有的博客论坛,中文外文的教程我都看了个遍,但是又没有实实在在能够解决问题的答案,是真的心累。
在经历了三天时间,终于把服务器搭建好了,因为网上教程不够详细,也为后来人不走弯路,也为了备份。所以在这里写一份详细的配置文章。
(ps:以下只是个人见解,如有不对,敬请指出 )
mysysGit下载地址:http://msysgit.github.io/
COPSSH下载地址:http://pan.baidu.com/s/1eRSGWWq
服务端需要安装的软件(Git for Windows,COPSSH)
客户端需要安装的软件(Git for Windows)
客服端需要的操作其实就是设置自己的用户名和邮箱让电脑认识它,就像每个人刚出生总要有姓名对吧,别人才好称呼你。
还有就是创建一对公私钥进行连接服务端的验证
(1)安装Git(2.13.3版本)
记得在Additional icons前面打上勾
在安装完后,在桌面上打开Git Bash进行运行前的初始化
(因为是在桌面打开的,所以公私钥会 生成在C:/用户/Administrator)(2)服务端安装COPSSH
安装目录它会默认安装在program file目录下,目录带空格可能会导致有问题,所以我选择安装在盘的根目录下
这一步该软件会帮你创建一个SvcCOPSSH用户,密码可以自己改(我也不晓得默认密码是什么)
点击确定,然后等待安装完成。
打开菜单栏里的COPSSH Control Panel进行配置。
点击最上面的Users,然后点击Add添加一个给客户端进行连接的用户。
在这里选择用户,我是选择Administrator,然后点击Forward。也可以选择刚刚默认帮你创建的SvcCOPSSH用户
(没试过,也不晓得由会不会出现什么毛病)
不要勾选第一栏的Allow password authentication,点击Forward完成。
可以看到一个用户已经被添加了。但是这样只是增加了一个客户端可以连接的用户,客户端现在还不能连接上服务端。点击Keys你会发现里面什么也没有,这里就是用来配置客户端的公钥的,只要添加了客户端的公钥进去,客户端就能进行连接啦!
我们在之前已经执行了相关命令生成公私钥了。打开C:/用户/Administrator下的.ssh文件夹,找到id_rsa_pub,它就是公钥了。
打开它复制里面的全部的内容。
打开C:/ICW/home/Administrator下的.ssh文件夹(这个),新建一个authorized_keys文件,注意这里没有任何后缀名。
然后打开把刚刚复制的公钥粘贴进去保存。然后你会点击Keys里面就添加了客户端的公钥。(我这里添加了两个客户端公钥)
打开Git窗口,输入:ssh 用户@服务器IP地址,可以发现连接已经成功了。
但是现在不能使用git命令,COPSSH它是不认识git是什么鬼东西,所以我们要让COPSSH服务器认识它,
我们才能在登录上服务器上使用Git命令。(我们需要登录上服务器使用git命令创建一个远程仓库)
(用户是你在服务器上创建的需要连接的用户)
(1)复制
C:\Git\mingw64\bin下面的libiconv-2.dll,
C:Git\mingw64\libexec\git-core下面的
git.exe、git-upload-pack.exe、
git-upload-archive.exe、git-receive-pack.exe到C:\ICW\bin
复制
C: Git\mingw64下面的share文件到COPSSH的安装根目录下
复制之后
(2)修改文件
添加
gitpath='/cygdrive/C/Git/mingw64/bin'
gitcorepath='cygdrive/C/Git/mingw64/libexec/git-core'
exportPATH="/bin:$syspath:$gitpath:$gitcorepath:$winpath"
到C:\ICW\etc 目录下的 profile文件中
添加
gitpath='/cygdrive/c/Git/mingw64/bin'
gitcorepath='cygdrive/c/Git/mingw64/libexec/git-core'
PATH=${gitpath}:${gitcorepath}:${PATH}
到C:\ICW\home\Administrator下的 .bashrc文件中
重启COPSSH服务器,登录服务器,输入git,发现COPSSH服务器可以识别Git命令了。
接下来我们使用Git命令创建一个远程仓库
(登录上服务器你所在的目录为C:\ICW\home\Administrator,所以我们创建的远程仓库在此目录下,也只能在此目录下才能被客户端进行访问
,也就是你用copssh添加的用户目录下才可以)
我在桌面上新建一个文件夹,右击选择git bash打开
输入git clone [email protected]:test(服务器用户名@服务器IP地址:远程仓库名,注意是冒号
注意仓库路径,在用户根目录下的话直接填冒号仓库名就可以了,如果不是要用~/用户目录下的路径/仓库名)
看到已经把服务器刚刚创建的远成仓库test克隆过来了