在之前的一篇文章中罗列出了git常用的命令和场景,之前的git命令学习是基于码云或者github其他第三方托管平台,当然也可以在自己服务器上搭建git仓库,自行管理自己的项目代码。这样安全性有保证了,可是也失去了第三方托管平台的图形化界面操作的便捷。以下步骤也可以在虚拟机中尝试
流程:
- 在linux上安装git
- 在linux中新建一个git用户
- 创建ssh证书
- 导入ssh证书
- 选定一个空目录作为代码仓库
- 更改git命令的所有者
- 禁止ssh登录服务器
大概流程清楚后,下面开始实战:
在linux上安装git
使用命令:yum install git
创建一个git用户
输入:adduser git
创建ssh证书
*这里创建ssh证书,是在本地创建,而不是在服务器端创建的。这个需要注意。以win为例,打开git命令面板,
1、先配置用户名和邮箱:(如果已经配置了则跳过)
git config --global user.name '你的名称'
git config --global user.email '你的邮箱地址'
2、然后生成公钥和私钥
ssh-keygen -t rsa -C "你的邮箱地址"
回车后会看到以下界面。这里是选择ssh文件保存的路径(直接回车),我选择默认路径,即最后一行显示的、 保存在了c盘的这个位置中(c/user/Jioho/.ssh/id_rsa)。
紧接着会让你输入密码(会有2次确认,简短的英语很好理解的)。默认保持不输入(也是直接回车,避免每次clone代码都需要输入密码的麻烦)
成功执行后会看到这样的界面:
然后我们到刚才提示的c盘的目录中,找到我们需要的ssh文件。(之前一直找不到对应的文件夹,是因为C盘中的user的中文别名叫“用户”,所以C:/user/ 其实就是 C:/用户/)。打开文件夹后,里面会有2份文件,分别为公钥和私钥。
当然可以使用文本编辑器打开ssh公钥查看里面的内容(不推荐使用记事本直接打开,原因不多作解释)
这时候我们就需要把id_rsa.pub文件放到服务器上,准备下一步的工作。这里我使用的是Winscp工具。把文件放在服务器任意地方都可以,只要自己找得到就行。
导入自己的SSH证书
以上生成SSH证书的步骤弄懂后,就需要把自己的ssh公钥证书导入服务器的公钥管理的地方
在服务器中找到 /home/git/.ssh/authorized_keys
找到刚才放在服务器上的 id_rsa.pub文件。然后使用命令:cat id_rsa.pub >> authorized_keys
注意路径不要弄错,因为我这是在 /home/git/.ssh/ 的目录中了
(如果linux命令用的不熟的,其实可以直接使用winscp编辑文件,把id_rsa.pub文件的内容复制粘贴到authorized_keys文件中。方法不是唯一)
最重要的一点,也是最容易出错的一点!linux一切皆文件,所以要给对应的文件设置好组和权限!!
*注:这里的/home/git/下的文件所有者必须都为git .ssh的权限为最少700或者755 authorized_keys权限最少为600
创建一个仓库目录
选定一个空目录作为仓库 这里选择 /srv 目录。切换到 /srv 目录下
执行命令 : git init --bare test.git (这样就创建了一个名叫 “test”的git仓库了)
更改仓库所有者和权限
chown -R git:git test.git (“因为我的仓库名称叫test,所以可以根据自己的仓库名称进行修改”,仓库的所有者应该为git。 )即步骤2创建的git用户
禁止linux使用git的ssh登录
这里禁止的意义是为了服务器的安全性,避免从git的ssh可以直接登录服务器
编辑/etc/passwd文件
找到 : git:x:1001:1001:,,,:/home/git:/bin/bash
改为 : git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
*可能用到的命令:修改ssh后,有可能需要重启ssh才能生效
SSH重启: service sshd restart
SSH启动: service sshd start
以上步骤都完成后,就可以试下把服务器的代码clone下来了。由于是在自己服务器搭建的git环境,所以git文件的url如下:
git@ip地址:/srv/test.git
ip地址很好理解,而url后面的 /srv/test.git 则是git文件在服务器上的位置,如果仓库在其他目录,那么/srv/test.git换成你对应的文件目录即可。
确认项目路径没错后,回车进行clone。这时候会看到一句警告
warning: You appear to have cloned an empty repository.
不要慌张,其实仔细一看,只是git提示我们:你似乎clone了一个空的项目。打开克隆下来的文件夹,查看是否有一个.git的隐藏文件。如果有的话,那就是已经clone成功,那也代表着linux搭建自己的git服务成功了!然后就可以进行愉快的开发了。具体的git常用命令在我的博客另外一篇文章中也有提到,感兴趣的也可以看看!