Loading... 欢迎移步博主CSDN:[CSDN博客](https://blog.csdn.net/weixin_42327790/article/details/102712741) # 1. 系统环境 系统: Linux:CentOS 7.2 64位 # 2. 安装git ```shell # 请确保您切换到了root账户 su root yum install -y git # 验证是否安装成功 git --version ``` # 3. 添加git的管理的账户和设置密码 ```shell # 添加git账户 adduser git # 修改git的密码 passwd git ``` # 4. git的权限管理 git仓库的权限管理,我们这里采用手动进行管理和配置,可自行选择自动工具`gitolite`管理 # 5. git的手动权限管理 ## 5.1 配置服务端的ssh访问 切换到git账号,并创建ssh的默认目录和校验公钥的配置文件 ```shell # 1.切换到git账号 su git # 2.进入 git账户的主目录 cd /home/git # 3.创建.ssh的配置,如果此文件夹已经存在请忽略此步。 mkdir .ssh # 4. 进入刚创建的.ssh目录并创建authorized_keys文件,此文件存放客户端远程访问的 ssh的公钥。 cd /home/git/.ssh touch authorized_keys # 5. 设置权限,此步骤不能省略,而且权限值也不要改,不然会报错。 chmod 700 /home/git/.ssh/ chmod 600 /home/git/.ssh/authorized_keys 此时,服务端的配置基本完成。接下需要把客户端的公钥拷贝到authorized_keys文件中。 ``` ## 5.2 配置客户端的ssh私钥并上传服务器 以下是客户端创建ssh私钥和拷贝的过程,如果您有私钥越过创建私钥的过程。 请用您的客户端进入终端(如果只有一台电脑,可以用不同的账号模拟不同客户端) 第一步: 创建客户端的ssh私钥和公钥 检查是否已经拥有ssh公钥和私钥:进入用户的主目录。 用户主目录: Windows系统:`C:\Users\用户名` Linux系统:`/home/用户名` Mac系统:`/Users/用户名` 然后查看是否有.ssh文件夹,此文件夹下是否有如下几个文件。 # 用户主目录的.ssh文件夹下 ``` .ssh ├── id_rsa └── id_rsa.pub # 我们要用的私钥 ``` 如果没有,那么用ssh-keygen创建ssh的私钥。 ``` ssh-keygen -t rsa ``` # 接下来,三个回车默认即可。 创建私钥成功后,在查看用户目录是否有意加有了公钥文件id_rsa.pub 第二步: 拷贝私钥到git的服务器 如何把客户端的文件拷贝到服务器端,我建议用scp命令进行拷贝。 以下以windows系统为例: ```shell # 首先进入我的用户主目录的.ssh目录下,注意用户名xxx替换成自己的 $ cd C:\Users\用户名/.ssh # 以下命令是:把本地的id_rsa.pub文件拷贝到 aicoder.com服务器,登录aicoder.com服务的账号是git。 # 冒号后面默认就是git账号的主目录,最后文件被保存成laoma.pub # 注意:把域名换成你自己的或者ip,最后的文件名可以自己定,后面还有用。 scp ./id_rsa.pub git@yourIP.com:.ssh/laoma.pub ``` ## 5.3 服务器端添加客户端的SSH公钥 切换到服务器端,把刚才上传的laoma.pub文件的内容添加到 authorized_keys中,就可以允许客户端ssh访问了。 ```shell # 切换到git账户 su git cd /home/git/.ssh ls -al # 查看一下.ssh目录是否有authorized_keys和laoma.pub文件 # . # |-- authorized_keys # `-- laoma.pub # 如果有,那么进行下面的把laoma.pub文件中的内容添加到authorized_keys中. cat laoma.pub >> authorized_keys # >> 是在文件后面追加的意思,主要如果用其他编辑器,每个ssh的pub要单独一行,建议用cat命令方便简单。 ``` 到此为止,您配置的客户端应该可以ssh的方式直接用git账号登录服务器。(当然不安全,后面可以控制) ```shell # 在客户端用ssh测试连接远程服务器,请将域名yourIP.com 换成你的ip地址或者域名 $ ssh git@yourIP.com ``` 第一次连接有警告,输入yes继续即可。如果可以连接上,那么恭喜你的ssh配置已经可以了。 ## 5.4 服务器端创建测试git仓库 进入服务器的终端。 ```shell # 切换到git账号 $ su git # 进入git账号的用户主目录。 $ cd /home/git # 在用户主目录下创建 test.git仓库的文件夹 $ mkdir myCode && cd myCode # 在myCode 目录下初始化git仓库 $ git init --bare # 输出如下内容,表示成功 Initialized empty Git repository in /home/git/myCode/ #第一次创建仓库后请执行以下代码 #这是由于git默认拒绝了push操作,需要进行设置 #方法一:需要配置一下git的接收配置,执行如下命令即可正确提交(在服务器上,而不是git bash中): git config receive.denyCurrentBranch ignore ``` git init --bare 是在当前目录创建一个裸仓库,也就是说没有工作区的文件,直接把git仓库隐藏的文件放在当前目录下,此目录仅用于存储仓库的历史版本等数据。 此时,客户端就可以进行clone或者remote add此仓库了。 ## 5.5 客户端测试连接git远程仓库 客户端,可以新建一个文件夹,初始化一个仓库,然后跟远程服务器上的空仓库建立连接。 ```shell # 以下shell代码,纯手写没有验证,如果有错误请自行纠正。 mkdir code && cd code git init touch test.txt echo 'test' >> test.txt git add . git commit -m 'the first commit' # 把当前仓库跟远程仓库添映射 git remote add origin git@yourIP.com:myCode # 把当前仓库push到远程仓库。 $ git push -u origin master ``` 到此为止,我们就可以尽情的享用git私服了 ## 5.6 TortoiseGit 实现SSH协议推送拉取远程git服务器代码 ### 5.6.1 安装TortoiseGit 首先自行安装好TortoiseGit客户端 ### 5.6.2 打开小乌龟自带的PuTTYgen 在之前使用Git命令操作的时候,已经生成了ssh key,在路径 ~/.ssh/下,打开小乌龟自带的PuTTYgen。 ### 5.6.2 加载已经生成的私钥 然后加载已经生成的私钥,点Load按钮,选择私钥。如果你看不到你的的id_rsa,右下角类型选择All Files就可以了  若没有.ppk文件请按一下方式生成  ### 5.6.3 保存Save private key 然后点击Save private key,选择保存路径进行保存。  ### 5.6.4 配置TortoiseGit 然后打开小乌龟的设置,在Git下有一个远端,然后点你的远端名字,然后你会看到有一个Putty密钥,选择你刚才生成的后缀为ppk的那个私钥,然后点应用,点确定  #### 5.6.4.1 TortoiseGit远程端口设置 打码部分为你的服务器地址 url格式 `ssh://用户名@ip:端口/~/文件夹地址` (`~`代表当前用户目录)  最后修改:2023 年 03 月 19 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏