SSH协议是通过公钥和私钥来进行服务器的授权管理,是git的读写操作的标准协议。
假设cglab以服务器管理员账号,labserver为主机名。
1. 首先在linux server服务器安装openssh
$sudo apt-get install openssh-server
2. SSH的公钥与私钥,所生成的公钥可以用不同的用途,比如下面生成的id_rsa.pub公钥用作shell登陆,而gitadmin.pub用作git访问。
(1)创建公钥和私钥
$ssh-keygen //该操作是在客户端,
该命令会在用户主目录下创建 .ssh 目录,并在其中创建两个文件:
l id_rsa, 私钥文件。是基于 RSA 算法创建。该私钥文件要妥善保管,不要泄漏。
l id_rsa.pub, 公钥文件。和 id_rsa 文件是一对儿,该文件作为公钥文件,可以公开。
创建了自己的公钥/私钥对后,就可以使用下面的命令,实现无口令登录远程服务器,即用公钥认证取代口令认证。
$ssh-keygen –f~/.ssh/gitadmin //该命令创建一个指定名字为gitadmin的公私钥文件对。
(2)将公钥上传到服务器
$scp ~/.ssh/gitadmin.pubcglab@labserver:/tmp/ //上传到服务器,用作gitolite访问,具体用法参见下篇
$ scp ~/.ssh/id_rsa.pubcglab@labserver:/tmp/ //上传到服务器,用作shell访问
(3)将上传的公钥,根据需要用作不同用途
$ssh cglab@labserver //以cglab账号登陆服务器
cglab@labserver:~$sudo ssh-copy-id –i /tmp/id_rsa.pubgitadmin@labserver //加入到SSH登陆身份gitamdin,用作shell访问
(4)SSH主机别名
回到客户端,在~/.ssh/下创建SSH主机别名,以方便登陆服务器访问shell用。
$vi ~/.ssh/config
其内容为:
host admin
user gitadmin //登陆到服务器所用的身份验证
hostname labserver //服务器主机名
port 22
identityfile ~/.ssh/id_rsa //所用的公私钥对,在此用的是id_rsa
(5)通过SSH登陆服务器
$ssh gitadmin //使用别名,以服务器账号gitadmin身份登陆服务器,登陆shell哟。
$ssh gitadmin@labserver //将用默认的id_rsa来认证,可以登陆shell