Linux git服务端搭建和公钥免密码登录
一、实验环境:
git服务端:
- 操作系统:Red Hat Enterprise Linux 7.1 64位
- 服务端ip:10.0.0.101
- git软件:git version 1.8.3.1(yum方式安装)
git客户端:
- 操作系统:Windows 10 64位
- git软件:
二、Linux git服务端安装:
1、安装git命令:
为了方便和稳定性,能使用yum安装的我们尽量使用yum安装,没必要去编译安装:yum -y install git
2、添加用户git用于访问数据仓库:
这里我们创建一个"/storage"目录,用来存储数据。添加一个用户git,git的用户目录为“/storage/gitroot”,同时以后此目录也是我们的数据仓库根目录,以后所有的数据仓库存放在此目录下。将创建的git用户的shell设置为 “/usr/bin/git-shell”的目的是禁止git用户通过shell登录,保证安全:mkdir -p /storage useradd -d /storage/gitroot/ -s /usr/bin/git-shell git # 设一个密码 passwd git
3、创建第一个数据仓库aiezu.com:
这里我们创建第一个数据仓库“aiezu.com”,用来存放我们正在开发的网站aiezu.com。同时设置权限为归git用户和组所有:cd /storage/gitroot git init --bare aiezu.com chown -R git.git /storage/gitroot/
4、git服务端安装完成:
按上面配置好后,一个数据仓库已经配置好了,数据仓库的URL为:"git@10.0.0.101:aiezu.com",用户名名为"git",密码为上面创建的“git”用户的密码。
三、git免密码登录:
上面在Linux配置好了git服务端,但是是需要密码登录的。如果希望实现免密码登录,需要在客户机的用户目录下".ssh"文件夹生成一对"公钥/私钥",并将"公钥"内容添加到git服务端的git用户根目录下的".ssh/authorized_keys"文件中,这里是“/storage/gitroot/.ssh/authorized_keys”文件,这样就可以通过“公钥/私钥”认证,达到免密码登录的目的。简单的说"B服务器"的“git”用户目录下“.ssh/authorized_keys”文件中如果有公钥,与"A主机"当前登录用户的根目录下私钥文件“.ssh/id_dsa”是成对关系,那么B就能以“git”用户无需密码登录到A。
1、git免密码登录windows客户端配置:
windows的git客户端,在安装目录下,一般有"git-bash.exe"文件,可以用来生成"公钥/私钥"对。打开“git-bash.exe”文件,进入bash命令行。运行下面命令,生成"公钥/私钥"对:mkdir ~/.ssh cd ~/.ssh ssh-keygen -t rsa ls直接回车就可以看到在目录下生成了两个文件:id_rsa(私钥)、id_rsa.pub(公钥)。
2、git免密码登录linux客户端配置:
Linux客户端直接在bash使用"ssh-keygen"命令生成公钥/私钥对即可,如果没有"ssh-keygen"命令,需要安装"openssh"包,运行"yum -y install openssh"即可:mkdir ~/.ssh cd ~/.ssh ssh-keygen -t rsa ls
3、git免密码登录服务端配置:
在git服务端,在git用户目录下创建一个“.ssh”目录,并在".ssh"命令下添加一个“authorized_keys”文件。记住,每次使用root账户添加文件后,要将文件的所有者变更为git用户,否则会出现文件权限问题:mkdir /storage/gitroot/.ssh touch /storage/gitroot/.ssh/authorized_keys chown -R git.git /storage/gitroot/.ssh/然后将上面在git客户端生成的公钥"id_rsa.pub"的内容追加到authorized_keys文件中去,authorized_keys文件可以放多台客户机的公钥,一条公钥一行即可。这样,authorized_keys文件中有公钥的客户机,即可免密码登录到服务器了。