创建GIT服务器
首先在服务器上安装git工具,不同的Linux操作系统安装命令不同,Ubuntu使用apt install git,Centos使用yum install git。
然后创建git用户的密码,和git组。目的是为了和其它用户隔离。
- useradd git
- passwd git
- 切换为git账户登录操作:su git,输入刚才设置的git的密码,切换为git账户登录
- 创建git的工作目录,路径根据个人需求。由于创建完git账户后,在home下就会有个git的文件夹,并且通常home目录的空间也会比较大,所以我将git的仓库都放在/home/git下
- 新建私有仓库:
- cd /home/git
- git init --bare test.git test为你需要创建的仓库的名称。
至此,已经在服务器上创建了私有仓库,在客户端就可以通过git clone取代码了。
客户端访问仓库
- 取仓库代码:git clone git@serverIP:git_repository_path。
例如:git clone git@10.113.30.60:/home/git/test.git
- 添加文件,并推送至仓库
- cd至刚才clone的代码路径,即test目录下
- 添加需要增加的文件。复制,新建均可以
- git add filename
- git commit –m “something you want say”
- git push origin master 将代码Push到master
至此,仓库中已有了base的代码文件。
无密码访问git仓库
首先修改git所在服务器的ssh守护进程的启动配置文件,修改如下几项配置项:
- 切换至root账户,vim /etc/ssh/sshd_config
- RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
StricModes no
没有的配置项就新增
- 在Linux客户端执行ssh-keygen -t rsa,然后一路回车,最终会创建ssh认证的公钥和私钥。在win下,我安装了git工具,然后在任意文件夹中右键打开git bash,然后执行ssh-keygen -t rsa,然后一路回车,最终会产生WIN下的公钥和私钥。
以上操作都会提示文件生成的位置。
- 切换至git用户,然后cd到git工作目录下,cd /home/git
- mkdir .ssh
- chmod -R 700 .ssh
- cd .ssh
- touch authorized_keys
- 将第3步生成的ssh的公钥即id_rsa.pub中的公钥内容通过
- 上传文件至/home/git目录下,然后cat id_rsa.pub >> authorized_keys,追加至认证文件的末尾,注意文件的权限问题
- 直接编辑authorized_keys文件,将id_rsa.pub文件中的内容追加至文件的末尾
至此,客户端就可以不需要密码访问git仓库了。
测试:git clone git@10.113.30.60:/home/git/test.git 将会直接Pull文件,不再需要输入密码,如果还需要,则说明某个地方配置错误,需要排查原因。Pull过程中,如果提示输入yes或no,则输入yes,如下图:
同样,在win下使用git bash也需要做同样的测试。在win下测试通过clone不需要密码后,就可以使用github desktop来clone本地私有仓库了。
GitHub desktopàfileàClone a repositoryàURLàRepository URL or Github username and repositoryàgit@10.113.30.60:/home/git/test.gitàLocal pathà选择clone的本地目录àcloneà完成
注意,在使用GitHub Desktop clone私有仓库时,一定要先在本地通过git bash clone确定不需要数据密码后,再使用GitHub Desktop就基本没什么问题,否则会一直提示认证失败。
设置完ssh免密后,Win下clone,会提示如下信息,选择yes