git服务器使用gitolite时的ssh key生成注意

环境:

Ubuntu server 14.04.1 、Git 1.9.1 gitolite3

 

对于Git的介绍这里就不介绍,有兴趣的大家可以自己去网上搜搜。

下面介绍怎么安装Git服务器gitolite,以及怎么建立仓库、添加用户等操作,本篇文章不会介绍太多的Git本身的命令,因为我自己有些还没玩清楚,等什么时候玩清楚了,会写文章共享出来。

 

1 搭建ubuntu环境

我这里使用的是虚拟机安装的ubuntu,我使用的14.04,开始的时候使用的是13.04,但是有些软件包没有,所有就用14.04了。(对于linux是小白,为什么没有可能是没设置对,勿喷)

2 安装Git

首先我们需要安装Git,ubuntu提供了很方便的安装工具,apt-get,所以我们使用这个工具安装,在命令行中输入以下命令(server版进入就是命令行,如果是desktop版自己搜索进入命令行):

sudo apt-get update  

该条命令用于更新apt-get所能安装的软件的资源

sudo apt-get install git

该命令用于安装Git(下面的菱形是乱码)

3 安装openssh-server

sudo apt-get install openssh-server

ssh访问需要使用openssh-server

4 添加管理用户

添加用户git(也可以是其他的用户名,这里只是方便记忆),该用户用于管理git,包括仓库的创建、git用户的添加等

sudo adduser --system --shell /bin/bash --group git

有的系统,只允许特定的用户组(如 ssh 用户组)的用户才可以通过 SSH 协议登录,这就需要将新建的 git 用户添加到 ssh 用户组中。

sudo adduser git ssh

设置密码

passwd git

5 生成ssh key

git需要使用ssh访问,所以需要生成一组ssh key,至于ssh访问的详细介绍,自己搜索去吧。

切换到git用户下

su git

ssh-keygen

cd .ssh

cp id_rsa.pub authorized_keys

6 安装gitolite

在git用户下

mkdir bin  创建bin目录用于安装gitolite

从远端克隆gitolite

git clone git://github.com/sitaramc/gitolite

执行如下命令进行安装

~/gitolite/install -to ~/bin
mv ~/.ssh/authorized_keys ~/git.pub
~/bin/gitolite setup -pk ~/git.pub

如果如下内容说明成功:

7 查看默认仓库

还是在git用户下
ssh git@127.0.0.1

出现如下内容:

hello git, this is git@linux-dev running gitolite3 v3.5.2-4-g62fb317 on git1.8.1.2 
  R W    gitolite-admin
  R W    testing
代表gitolite工作正常
成功安装后gitolite会自动生成两个仓储,一个是testing.git用来测试,另一个gitolite-admin就是用来管理gitolite的配置仓储。
    将gitolite-admin.git clone到本地,注意:还是在git用户下,因为当前只有git用户对其有读写权限。

git clone git@127.0.0.1:gitolite-admin 

会在当前目录下面出现gitolite-admin目录。

8 添加git用户

需要在为需要添加的用户生成公钥文件,我这里在mac下面做的测试,在linux中跟上面生成git的ssh key方式一样,在windows中貌似需要使用一个工具msysgit。生成的一对文件,需要将其中的xxx.pub修改为需要添加用户的名字,例如我们想添加的用户名为mxy,需要将id_rsa.pub修改为mxy.pub。下面使用命令复制到gitolite-admin/keydir目录下:

scp <user>.pub git@ip:gitolite-admin/keydir 将pub公钥拷贝到gitolite-admin仓库

然后在git服务器的对应目录中查看是否已经存在对应的文件。

到这里用户只是添加了一部分,真正添加完成继续往下看。

9 添加仓库

打开gitolite-admin/conf/gitolite.conf文件

将其修改为如下内容(vi的命令自己搜,这里基本就用到了i、esc、:wq)

上面的repo代表是创建了一个demo仓库(创建的方式有很多种,这里我只是介绍这一种),下面的RW代表可读写,还有其他的关键字,自己搜索。等于号后面的代表是对于这个仓库的权限,多用户使用空格隔开。

10 将配置推送到gitolite服务器

走到第9步的时候,你是不是以为已经结束了呢,其实还没有,由于我们的gitolite-admin是clone下来的,这些配置只是保存在我本地的,所以我们还需要将其推送到gitolite的服务器上,然后才会生效。

在gitolite-admin目录下执行如下命令

git add .

git commit -m "这个是提交信息,用于表示这次提交的解释,可以随便写“

在这步的时候可能会出现如下错误,我们需要配置一下提交信息

解决方式如下(当然最后的配置需要根据自己的实际情况填写):

git push origin master  这条命令是推送到服务器,上面两条只是做的本地提交,对于本地提交自己好好学习一下git就了解了。

11 测试是否搭建成功

使用添加的用户去clone demo库,如果能够clone成功说明基本没问题了,我配置的用户mxy,所以我的命令行如下:

上面git@10.211.55.22,这个git指的是管理git的用户,后面的ip指的是git服务器的ip,如果我们能够把democlone下来了,那说明成功了

 

1、在Ubuntug下的客户端的ssh key生成方式:

安装好git,使用ssh-keygen -t rsa命令生成yourname.pub文件,将yourname.pub文件复制到gitolite-admin的keydir下面,修改conf/gitolite.conf,

在相应的项目后面添加用户:

@developer     =   yourname

repo      test_repo_name

       RW+     =    @developer

把上面的修改提交,并push到服务器。

在客户端测试:ssh git@server/IP:test_repo_name, 显示该用户拥有权限的所有项目信息。

 

2、在window下的客户端使用tortoiseGit:

TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥。使用命令ssh-keygen -C "邮箱地址" -t rsa产生的密钥在TortoiseGit中不能用。

而基于git的开发必须要用到rsa密钥,因此需要用到TortoiseGit的putty key generator工具来生成既适用于git的rsa密钥也适用于TortoiseGit的ppk密钥,

具体配置步骤如下:

1)运行TortoiseGit开始菜单中的puttygen程序,如下图示
 
2)点击“Generate”按钮,鼠标在上图的空白地方来回移动直到进度条完毕,就会自动生一个随机的key,如下图示
 
 如有需要,可以为密钥设置对应的访问密码,就是修改上图中“Key passphrase”和“Confirm passphrase”的值。
3)将上图中多行文本框的内容全选、复制,并粘贴到git账户的 SSH public key中,这就是适用于git的公钥。
4)点击上图中的“Save private key”按钮,将生成的key保存为适用于TortoiseGit的私钥(扩展名为.ppk)。
5)运行TortoiseGit开始菜单中的Pageant程序,程序启动后将自动停靠在任务栏中,图标显示为,双击该图标,
弹出key管理列表,如下图示
 

6)点击上图中的“Add Key”按钮,将第4步保存的ppk私钥添加进来,关闭对话框即可

同样将生成的ssh key保存为yourname.pub,然后将文件加入到gitolite-admin项目,并推送到服务器。

 

3、在windows下的cygwin环境下生成ssh key:

 

posted @ 2017-04-25 11:57  jeffkuang  阅读(782)  评论(0)    收藏  举报