Windows服务器下搭建基于SSH的GIT服务器.docx

上传人:b****3 文档编号:12633526 上传时间:2023-04-21 格式:DOCX 页数:28 大小:708.55KB
下载 相关 举报
Windows服务器下搭建基于SSH的GIT服务器.docx_第1页
第1页 / 共28页
Windows服务器下搭建基于SSH的GIT服务器.docx_第2页
第2页 / 共28页
Windows服务器下搭建基于SSH的GIT服务器.docx_第3页
第3页 / 共28页
Windows服务器下搭建基于SSH的GIT服务器.docx_第4页
第4页 / 共28页
Windows服务器下搭建基于SSH的GIT服务器.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

Windows服务器下搭建基于SSH的GIT服务器.docx

《Windows服务器下搭建基于SSH的GIT服务器.docx》由会员分享,可在线阅读,更多相关《Windows服务器下搭建基于SSH的GIT服务器.docx(28页珍藏版)》请在冰豆网上搜索。

Windows服务器下搭建基于SSH的GIT服务器.docx

Windows服务器下搭建基于SSH的GIT服务器

Windows服务器下搭建基于SSH的GIT服务器

一、工具/原料

服务端软件

1、GitforWindows:

MsysGit(Git-1.8.1.2-preview20130201.exe),这是真正的git,高版本的安装在后面配置时有些不同。

2、OpenSSHforWindows:

CopSSH(Copssh_4.1.0_Installer.exe),这是一个windows平台的SSH服务器

服务器系统:

WindowsServer2008SP1

客户端软件

1、GitforWindows:

SourceTree(SourceTreeSetup_1.6.23.exe),Git和Hg客户端,同时也是Mercurial和Subversion版本控制系统工具

客户端系统:

Windows8.1

2、生成用户

1、在服务器上生成Windows用户,取消用户下次登录时须更改密码,设置密码永不过期

选中我的电脑,点击管理,进入计算机管理界面,点击系统工具下的本地用户和组,再点击本地用户和组下的用户。

进入以下界面

在空白处右击,选择新用户,输入用户名,密码等,点击创建,用户创建成功。

如图

说明:

我把这个“yichi”设为了系统管理员。

2、将该用户隶属于GitUser组(如尚未生成该组,则先生成该组)

点击本地用户和组下的组。

进入以下界面

在空白处右击,选择新建组,输入组名GitUser,点击创建,组创建成功。

如下图

在本地用户和组下的组中选择刚才新建的组GitUser,右击选择属性,添加成员,如下图

点击“确定”完成新建用户。

3、给GitUser组赋权限

如果我们要管理的仓库已存在,或者在后面创建仓库后,把仓库文件夹的权限赋给添加的用户组GitUser,如下所示:

仓库文件夹->属性->安全->编辑

3、服务器端安装及部署

1、安装Git

关于安装路径说明,最好放到每个盘的根目录下,这里我放到了D盘根目录下。

注意:

路径最好不要有空格,因为空格不好处理(需要转义符转义),所以这也是没有放到ProgramFiles目录下的原因。

接下来的几步,按照图片所示选择即可。

下面选择第三个,不去转换成unix的代码风格

等待安装完成即可

2、安装SSH

安装在根目录下,避免路径中有空格,造成不必要的麻烦。

此处是设置SSH启动服务的密码。

安装好后提示通过“COPSSHControlPanel”添加用户。

完成安装。

3、生成SSHkey

Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要先在Git里面生成SHHKey,打开GitBash。

(1)检查SSHkeys是否存在:

查看路径C:

\Users\Administrator\.ssh,或者输入下面的命令,如果有文件id_rsa.pub或id_dsa.pub,则备份。

如果已存在文件的拥有者是想要创建的用户,则忽略步骤

(2),否则进入步骤

(2)生成SSHkey

$ls-al~/.ssh

#Liststhefilesinyour.sshdirectory,iftheyexist

(2)生成新的SSHkey

第一步:

设置Git的username和email

查看是否存在要添加key的用户,全局的通过vim~/.gitconfig来查看,局部的通过当前路径下的.git/config文件来查看,不存在则设置:

$gitconfig--globaluser.name"yichi"

$gitconfig--globaluser.email"sunyichi163."

第二步:

生成public/privatersakeypair

在命令行中输入:

$ssh-keygen-trsa-C"sunyichi163."

默认会在相应路径下(/your_home_path)生成id_rsa和id_rsa.pub两个文件,如下面代码所示:

$ssh-keygen-trsa-C"sunyichi163."

#Createsanewsshkeyusingtheprovidedemail

Generatingpublic/privatersakeypair.

Enterfileinwhichtosavethekey(/your_home_path/.ssh/id_rsa):

回车。

第三步:

输入passphrase(本步骤可以跳过,直接2个回车,密码为空)

设置passphrase后,进行版本控制时,每次与GitHub通信都会要求输入passphrase,以避免某些“失误”:

Enterpassphrase(emptyfornopassphrase):

[Typeapassphrase]

Entersamepassphraseagain:

[Typepassphraseagain]

样本结果:

Youridentificationhasbeensavedin/your_home_path/.ssh/id_rsa.

Yourpublickeyhasbeensavedin/your_home_path/.ssh/id_rsa.pub.

Thekeyfingerprintis:

01:

0f:

f4:

3b:

ca:

85:

d6:

17:

a1:

7d:

f0:

68:

9d:

f0:

a2:

dbsunyichi163.

第四步:

将新生成的key添加到ssh-agent中

#startthessh-agentinthebackground

$eval"$(ssh-agent-s)"

Agentpid4280

$ssh-add~/.ssh/id_rsa

Enterpassphrasefor/your_home_path/.ssh/id_rsa:

Identityadded:

/your_home_path/.ssh/id_rsa(/your_home_path/.ssh/id_rsa)

以上所有配置如下图所示:

4、配置SSH用户

打开SSH控制面板(COPSSHControlPanel)

开始配置SSH用户。

选中“Users”选项卡,点击Add按钮添加用户。

选择用户名User,此处可以选择刚刚安装SSH时设置的“yichi”用户,也可以自己新建一个用户来作为管理账户。

注意AccessType选择“LinuxshellandSftp”,并把options的第一个选项“Allowpasswordauthentication”前面的勾去掉,因为我们要用公私钥来登陆,不用密码登陆。

点击“Apply”按钮完成添加用户,如下图。

点击右下方的“Keys”按钮,弹出窗口。

这里显示的就是ssh服务器中保存的公钥信息了。

若有公钥信息,用户就可以使用对应的私钥来远程登陆到ssh服务器进行相应的操作了。

第一次我们安装的时候,publickey里应该是空的,我们现在要做的,就是把上一步中,我们自己生成的公钥信息,添加到这里来,步骤如下。

找到COPSSH的安装目录(我这里是D:

\ICW),然后打开其中的home文件夹,可以看到里面有以我们刚加入的user的名字命名的文件夹,进入其中,打开.ssh文件夹。

在里面新建一个名字为authorized_keys的文件。

注意,这里没有任何后缀。

然后用记事本打开,然后将刚才配置git时生成的SSH公钥(id_rsa.pub)里的全部信息复制拷贝到这个文件里。

然后,保存退出。

回到COPSSHControlPanel中,将点击“Keys”产生的窗口关闭后,再打开,会看到其中有了一个公钥信息了,如下图:

5、确认防火墙开放了22端口,没有禁止22端口的TCP/IP通信

(1)通过单击「开始」按钮,再单击“控制面板”,然后单击“Windows防火墙”。

如下图所示:

(2)在左窗格中,单击“高级设置”。

如果系统提示您输入管理员密码或进行确认,请键入该密码或提供确认。

(3)在“高级安全Windows防火墙”对话框的左窗格中,单击“入站规则”,然后在右窗格中,单击“新建规则”。

(4)选择“端口”,点击“下一步”。

(5)选择“TCP”和“特定本地端口”,并在输入框中输入端口号“22”,点击“下一步”。

(6)选择“允许连接”,并点击“下一步”。

(7)如上图选择,并点击“下一步”。

(8)如上图,在名称中填写22,并点击“完成”。

在“高级安全Windows防火墙”中可以看到我们刚刚新建的端口号22,如下图所示。

6、登陆SSH服务器

到了这里,我们已经可以使用我们的私钥,来登陆这个ssh服务器了。

打开“GitBash”。

在命令行里输入:

$sshyichi192.168.61.17

yichi就是在COPSSH中配置的用户名,192.168.61.17是我的ip地址。

Areyousureyouwanttocontinueconnecting(yes/no)?

后面键入yes,回车,如下图:

运行如下unix命令行,如运行未出错,则完毕。

7、使用GIT命令

接下来你会发现,登陆成功以后,可以使用linux的命令,但是git的命令还是不能使用,别急,接下来我们解决这个问题。

使用的解决方法很简单,如下:

(1)将$Git\libexec\git-core目录下的git.exe,git-receive-pack.exe,git-upload-archive.exe,git-upload-pack.exe复制到$ICW\bin目录下;

(2)将$Git\bin目录下的libiconv-2.dll复制到$ICW\bin目录下;

(3)将$Git下的share目录整个拷贝到$ICW下。

其中,$Git是指Msysgit的安装目录,同理$ICW指CopSSH的安装目录。

至此,配置完毕,接下来,开始使用。

4、创建仓库,git服务器的测试

(1)打开“GitBash”,使用下面的命令连接到ssh服务器。

$sshyichi192.168.61.17

这个命令上面有说明。

(2)然后依次使用下列命令:

$cdd:

yichiebs-44324/cygdrive/d

$cdwork//

yichiebs-44324/cygdrive/d/work/

$mkdirtestgit

mkdir:

cannotcreatedirectory`testgit':

Fileexists

yichiebs-44324/cygdrive/d/work/

$rm-rftestgit

yichiebs-44324/cygdrive/d/work/

$mkdirtestgit//创建testgit文件夹

yichiebs-44324/cygdrive/d/work/

$cdtestgit//进入testgit文件夹

yichiebs-44324/cygdrive/d/work//testgit

$gitinit//版本库初始化,会以testgit为库名建立一个新库

InitializedemptyGitrepositoryinD:

/work//testgit/.git/

如果使用了gitinit初始化,则远程仓库的目录下,也包含worktree,当本地仓库向远程仓库push时,如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题),那么push后的结果不会反应在worktree上,也即在远程仓库的目录下对应的文件还是之前的容。

解决方法:

必须登录到远程的那个文件夹下使用命令gitreset--hard才能看到push后的容。

(3)创建first.txt和second.txt文本文档,并添加到Git。

注意:

下面这一步是必须的,否则没有生产分支master,无法在客户端进行任何操作。

$touchfirst.txtsecond.txt

$gitstatus

#Onbranchmaster

#Untrackedfiles:

#(use"gitadd..."toincludeinwhatwillbecommitted)

#

#first.txt

#second.txt

nothingaddedtocommitbutuntrackedfilespresent(use"gitadd"totrack)

$gitadd.//将所有文件添加至Git,注意add后面有一个空格和英文字符点号(.)

$gitconfig--globaluser.name“yichi”//设置用户名

$gitconfig--globaluser.email“sunyichi163.”//设置地址

$gitcommit-m“init”//将修改提交至Git,“init”为提交的容说明

[master(root-commit)fc36463]testaddtwofiles

2fileschanged,0insertions(+),0deletions(-)

createmode100644first.txt

createmode100644second.txt

$ls

first.txtsecond.txt

Git默认拒绝了push操作,需要进行设置,在Git仓库/.git/config文件后面添加如下代码:

[receive]

denyCurrentBranch=ignore

至此,就可以把代码push到服务器。

5、自己搭建git服务器用途

做了上面这些到底有什么用呢?

如果你是在自己家里上网,你可以在自己电脑上搭建一个git服务器,提供给你的朋友使用,可以和你的朋友一起开发一个东西,而且不用再一起就行,只要能连上因特网。

当然要做一个服务器,首先要能连接到外网,如果你处在路由器的局域网,需要做端口映射,ssh服务器的端口号是22。

6、客户端安装

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1