服务器(存放git仓库)创建git用户并设置密码,创建git仓库,并在客户端创建私钥,将公钥放到服务器。
1、服务器创建git用户并设置密码
useradd git
passwd git (设置一个很复杂的密码)
2、服务器创建git仓库(关键步骤)
mkdir -p /data/git/gittest.git
git init --bare /data/git/gittest.git
chown -R git:git /data/git/gittest.git
其实到这一步,git已经能用了。比如在客户端电脑执行git clone git@host:/data/git/gittest.git就可以下载代码并进行提交推送和更新。如果服务器ssh端口号不是默认的22,那么命令为git clone ssh://git@host:port/data/git/gittest.git(前面增加ssh://协议,后面增加port)。注意:host是服务器域名或IP,port是sshd的端口号。
但我们更希望使用公钥私钥来管理git,防止别人暴力破解。
3、免密码登录
首先客户端要创建公钥私钥对。执行命令ssh-keygen -t rsa,一路回车即可创建id_rsa,id_rsa.pub两个公钥私钥对文件。这两个文件一定要保管好!将id_rsa.pub文件的内容追加到服务器的git用户下的authorized_keys文件中。编辑文件也可以,执行命令也可以。比如将文件上传到linxu服务器后,执行cat id_rsa.pub >> /home/git/.ssh/authorized_keys。
当然,对于其他人如果也想免密码连接服务器,可以拷贝这两个文件给他们,放到C:\Users\dhn.ssh目录中即可。
4、测试ssh免密码登录
ssh git@host -pport
如果登录成功,那么git也可以使用ssh协议免密连接了。命令同第二步,只不过不需要输入用户名密码了。
至此,git服务器配置结束。但我还要介绍一下TorToiseGit使用免密连接git的用法,因为TorToiseGit连接服务器使用的是自带的TortoisePlink,我们把它修改为git软件自带的ssh.exe:
这样,TortoiseGit也可以跟命令行使用git一样免密码连接刚才的服务器的git了。
另外:如果发现git命令无法clone项目,很可能是服务器的git没安装在默认位置,比如安装到了/usr/local/git/bin/git,这时候,需要创建两个软连接到/usr/bin里:
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/ ln -s
/usr/local/git/bin/git-upload-pack /usr/bin/
git-upload-pack是clone用的,git-receive-pack是push用的,很显然,命名是从服务器的角度命名的。