使用Git搭建自己的私有/个人Git仓库
- 准备工作
- 安装Git 配置Git的SSH访问
- 配置SSH访问
- 客户端生成ssh私钥上传服务器
- 服务端将客户端上传私钥加入密钥验证文件
- 客户端验证连接
- 服务端创建Git仓库
- 补充说明
准备一下
系统:Windows7/8/10
验证:Dos命令行输入ssh,返回如下图即存在ssh,如不存在请通过【控制面板 - 程序 - 添加windows功能 - 勾选OpenSSH】后重启电脑再进行尝试
安装Git
服务端和客户端均需安装Git
官方链接: https://git-scm.com/download/win
配置Git的SSH访问
上述准备工作弄好后就可以开始了,这里仅介绍SSH的方式(这里会简单介绍基本配置和一些坑点)
配置SSH访问
先打开服务端的git bash,路径切换到你安装的git的sshd配置文件的路径,假设我的Git安装在E盘,则路径为:E:\Git\etc\ssh。该路径可看到ssh_config和sshd_config两个配置文件
# 路径切换到ssh文件夹 cd E:\Git\etc\ssh # 创建.ssh文件夹 mkdir .ssh # 进入.ssh文件夹并创建authorized_keys文件,用来存放用户访问的ssh公钥 cd .ssh touch authorized_keys
此时服务端的准备工作已完成,接下来就是客户端的操作。
客户端生成ssh私钥上传服务器
以下流程是0-1的过程,如已创建过密钥且该密钥仍用于其它服务,请谨慎操作。重新生成的密钥将覆盖原密钥导致旧服务失效
首先,依旧是先打开客户端中的git bash,然后输入以下指令
ssh-keygen -t rsa
然后三个回车即可,如果填写了内容自己记住即可
创建成功后,查看用户的.ssh目录下是否有了私钥文件。这里存在一个坑点,很多人会发现,提示successful但是却找不到生成的密钥
windows系统中执行指令后需前往
路径: C:\Users\用户名\.ssh
这里将会生成两个文件,id_rsa,id_rsa.pub
id_rsa.pub就是我们需要的私钥
剩下就是就是上传到服务端,这里可以通过ftp、scp等,由于我服务端也是windows系统,直接通过远程桌面打开后将私钥复制上去即可
服务端将客户端上传私钥加入密钥验证文件
将客户端生成的私钥复制放置到刚刚服务端生成的authorized_keys文件同一个文件夹。
然后打开服务端的Git bash
# 路径切换到刚刚服务端生成的.ssh文件夹
cd E:\Git\etc\ssh\.ssh # 此时可以看到 authorized_keys文件 和 id_rsa.pub 私钥 # 执行下面的追加指令
cat id_rsa.pub >> authorized_keys # 追加完成后服务端的git需要打开RSA认证 # 返回上一级路径可看到一个sshd_config的文件,右键编辑 # 下面3个打开注释,若不存在则手动添加 # 注意:.ssh/authorized_keys这个路径根据你实际生成位置决定,如果你完全按照教程来,则无需改动 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
客户端验证连接
# 客户端git bash输入SSH访问指令 # eg: ssh impReeves@10.232.53.66 ssh 账号名@服务器IP
第一次连接有Warning警告,输入yes继续即可,如果可以正常连上,那么恭喜你SSH配置已经完成了。
注意:如果仍然提示需要密码,请重新检查步骤3是否有误,一般问题都是sshd_config中 .ssh/authorized_keys 这个的路径问题,所以为了避免不必要的麻烦,萌新尽量按教程生成authorized_keys
服务端创建Git仓库
进行这一步之前请确认自己的SSH连接是正常的哈,不然以下步骤也只能干瞪眼...
如果以上步骤均已成功,恭喜你,来到最后一个环节,初始化自己心爱的私人仓库了
仓库位置可以根据个人喜好放置,但建议路径不要包含中文名字
# 在E盘新建一个专门放置git的文件夹git_workspace cd e: mkdir git_workspace cd git_workspace # 然后创建项目的git仓库,假设我要做写一个工具项目,则 mkdir tools.git cd tools.git # 进入生成的tools.git文件夹后,初始化git仓库 git init --bare # 输出以下内容则表示初始化成功!
# Initialized empty Git repository in e:/git_workspace/tools.git/
至此,git服务器搭建完了
剩下的就是通过客户端进行clone或者remote add等操作了
# git克隆使用地址 git clone 用户名@服务器IP:/相对用户根目录的git仓库绝对路径/git仓库名.git # 以我为例子 git clone ImpReeves@10.232.53.66:e:/git_workspace/tools.git # 如果ssh验证成功就直接进行clone了,https的方式会提示输入用户名、密码,如果ssh也提示输入用户名密码,请验证ssh过程是否正确
补充说明
git init --bare 是git命令,是在当前目录创建一个裸仓库,也就是说没有工作区的文件,直接把git仓库隐藏的文件放在当前目录下,此目录仅用于存储仓库的历史版本等数据。