Win10搭建Git服务器

软件及环境

  1. Win10专业版

  2. Git 2.13.3-X64

  3. Copssh 4.1.0

搭建过程

安装Git

所有的安装选项维持默认即可,建议不要安装到Program Files文件夹。

安装Copssh

  1. 建议安装路径不要安装到Program Files文件夹

img

  1. 安装的时候会创建一个windows账户,建议自定义。到时候在传代码的时候会用到

img

  1. 会安装一个openssh服务,点击确定

img

  1. 安装完成

img

配置Copssh

  1. 在开始菜单中找到 COPSSH Control Panel 打开,点击Users栏,按图中添加CopSSH用户(此用户就是安装时候添加的那个)。

img

img

img

  1. 将Git安装目录下C:\Git\mingw64\bin中的git.exe、git-receive-pack.exe、git-upload-archive.exe、git-upload-pack.exe、libiconv-2.dll五个文件拷贝到Copssh安装目录bin文件夹中

  2. 打开Copssh安装路径下etc/profile文件。在最后追加四行命令(注意:前三行命令中的/cygdrive后面换成你的路径)

1
2
3
4
5
6
7
8
gitpath='/cygdrive/e/Git/mingw64/bin' 

gitcorepath='/cygdrive/e/Git/mingw64/libexec/git-core'

gitmergetoolspath='/cygdrive/e/Git/mingw64/libexec/git-core/mergetools'

export PATH="/bin:$syspath:$gitpath:$gitcorepath:$gitmergetoolspath:$winpath"

服务端配置Git

将下面三个路径添加到环境变量path中,注意替换成你的路径

1
2
3
4
5
C:\Git\mingw64\bin

C:\Git\mingw64\libexec\git-core

C:\Git\mingw64\libexec\git-core\mergetools

客户端配置Git

  1. 配置git名称和邮箱,注意邮箱和名字替换成你自己的
1
2
3
git config --global user.email "mrtantan@gmail.com"

git config --global user.name "mrtantan"

此时你就可以用密码登录了,如果你还想实现免密登录(公钥登录),就往下看吧

  1. 通过下面命令生成公私钥,邮箱就是上一步设置的邮箱,连续按三次空格就行
1
ssh-keygen -t rsa -C "youremail@example.com"

公钥登录

  1. 在服务端的copssh安装目录下面的home\你创建的用户.ssh 文件夹下面新建authorized_keys文件,注意没有扩展名

  2. 把客户端生成的公钥文件复制到上一步的authorized_keys文件里面(公钥文件是 C:\Users\当前用户名.ssh 文件夹下的 .pub格式文件。直接用文本编辑器打开复制里面的内容到authorized_keys文件,如果添加多个请换行)

  3. 关于下面这个选项,如果未选中的话,必须要有公钥才可以登录,不可以用密码登录。如果选中的话,会首先验证公钥,没有公钥在验证密码。

img

  1. 现在你就可以用公钥登录了。

遇到的2个坑

  1. 执行 git clone 时候会出现下面情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ git clone git@1xx.2xx.3xx.2xx:/xxx/sample.git
Cloning into 'sample'...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
x:1x:ex:6x:ax:cx:6x:6x:3x:3x:ex:3x:0x:cx:1x:5x.
Please contact your system administrator.
Add correct host key in /c/Users/xxx/.ssh/known_hosts to get rid of th
is message.
Offending RSA key in /c/Users/xxx/.ssh/known_hosts:10
ECDSA host key for 1xx.2xx.3xx.2xx has changed and you have requested strict chec
king.
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

问题原因:
服务端发生变化,加密的密钥改变,造成本地保存的密钥失败。

解决方案:
删除 C:\Users\当前用户名.ssh\known_hosts 文件中指定ip的密钥即可。

  1. 设置好公钥登录,出现permission denied

img

解决方法:

把安装copssh时候创建的用户删掉,然后再重新创建一个同名的账户,然后删掉copssh里面那个账户,在重新添加一遍。最后务必重启服务!注:重新添加的这个root账户必须设置隶属于administrator才可以。不然克隆项目会提示没有相关权限!!!