看git的官方教程,里面没有把如何搭建线下git服务器的SSH的连接说清楚,也许作者认为有些东西是我们理所当然知道的,可是还是有些坑阻挡了我们一些时间。经过折磨,终于把这个弄通了,过程记录如下:
服务器地址:10.10.10.19
本机PC:10.10.10.99
假设我们已经在服务器上建立起了一个空的git仓库目录 /opt/git-repo/project.git
我们已经有一个专门的git服务器账户,没有的话可以用root账户新建(adduser git)
接下来主要分为服务器端的配置和客户端的配置
服务器端配置
一般linux系统上都已经安装了ssh,如果没有安装,自行百度安装
以下步骤用root账户进行操作:
编辑/etc/ssh/sshd_config文件
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
放开以上三行的注释
StrictModes no
放开StrictModes yes的注释,同时修改yes为no
配置完成以后,重启ssh服务
service sshd restart
以下切换为git用户验证一下配置是否有效
生成ssh秘钥对
ssh-keygen -t rsa -P ‘’
连续按两次回车,不需要输入密码
生成以后,在 ~/.ssh/文件夹下会生成两个文件 id_rsa和id_rsa.pub文件
接下来把本地的公钥认证放入认证文件中,并且赋予600的权限
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
chmod 700 ~/.ssh/
然后使用 ssh git@localhost命令,如果没有让输入密码,则代表成功
客户端配置
客户端配置实际上和服务器的本地配置是一样的,只是在客户端生成秘钥对
打开git shell工具,然后输入 ssh-keygen -t rsa -P ‘’ 生成秘钥对
这样在C:\Users\ilove\.ssh下生成同样的两个文件id_rsa和id_rsa.pub,由于我的用户是ilove,所以是这样的,自己在找的时候,请切换到自己的用户目录,更改上id_rsa.pub的名字,为了表示这个文件是我的机器,我把文件名重新命名为了id_rsa_wtf.pub,然后上传到服务器,上传到服务器上以后,然后把这个文件追加到验证文件中去
cat id_rsa_wtf.pub >> authorized_keys
这时候再打开本机的git shell 再运行 git clone或者fetch就不会再让输入服务器密码了