zoukankan      html  css  js  c++  java
  • 安装gitolite,并ssh公钥无密码登录

    安装gitolite,并ssh公钥无密码登录

    gitolite是管理git版本库的一种方案,它将git版本库的管理信息放在了一个特殊git版本库里。gitolite与linux操作系统集成了,需要使用linux操作系统的用户登录gitolite,从而也就可以使用linux操作系统的无密码登录方式。
    以下是在ubuntu14.04上安准个gitolte的步骤。gitolite需要依赖的软件有git ssh perl,请确保他们提前安装好了。

    首先在管理员账户下进行如下操作

    创建公私钥对备用
    ssh-keygen -t rsa
    (如果要自其它电脑上连接gitolite,可以把生成的私钥拷贝过去使用)

    创建专用账户,常用user name 为git:
    sudo adduser --system --shell /bin/bash --group git

    设置密码:
    sudo passwd git

    设置公钥自动登录(因为是本机所以是git@localhost)
    sudo ssh-copy-id git@localhost

    设置公钥自动登录如果失败,还可以切换到git账户,然后直接使用一系列命令完成
    1.切换到git账户
    su git

    2.进入git用户的跟目录
    cd ~

    3.在根目录下创建.ssh目录
    mkdir .ssh

    4.设置.ssh目录的权限是700
    chmod 700 .ssh

    5.在.ssh目录下创建authorized_keys文件
    cd .ssh
    touch authorized_keys

    6.设置authorized_keys的权限是600
    chmod 600 authorized_keys

    7.将第一步生成的公钥追加到authorized_keys的末尾(/path/to/is_rsa.pub要替换为实际的路径)
    sudo cat /path/to/is_rsa.pub >> authorized_keys

    通过上面的步骤就设置好了一个可以ssh公钥免密码登录的git账户。
    另开一个控制台(注意不能切换到git用户)下执行下面的命令进行测试。
    ssh -i /path/to/is_rsa git@localhost
    第一次链接会提示未知的主机是否继续链接,点击yes会将主机的地址(localhost)添加到已知主机列表。
    不理解的话请参考阮一峰的日志《ssh的原理与应用》http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

    进入git账户之后可以安装gitolite了,

    首先要保证在当前用户的目录,可以输入如下命令
    cd ~

    将gitolite下载到git的用户目录(本步骤也可以从其它地方任何信任的地方把gitolite拷贝到git的用户目录)
    git clone git://github.com/sitaramc/gitolite

    在git用户目录下创建一个bin文件夹
    mkdir bin

    然后设置bin目录到环境变量,本来是需要编辑/etc/profile文件,在尾部加上一句 export PATH=/home/git/bin:$PATH
    在此我们简单处理,只为当前控制台上下文设置环境变量,在控制台输入下面的命令回车
    PATH=/home/git/bin:$PATH

    然后执行gitolite文件夹下的install命令进行安装
    gitolite/install -ln
    上面的安装命令表示 安装方式是在bin文件夹下建立一个指向gitolite文件夹下gitolite脚本的符号链接

    还可以执行下面的命令安装(注意不要重复执行安装命令)
    gitolite/install -to $HOME/bin

    至此gitolite已经安装好了,其实很简单,就是创建用户,就是把gitolite的文件放到指定的目录,然后在指定的目录创建符号链接。但是ssh的公私钥还没用上呢!下面开始介绍gitolite的配置,公钥在此时将会用上。

    接下来要进行gitolite的配置,此时还是要登录到git账户下进行。执行如下命令
    gitolite setup -pk /path/to/id_rsa.pub
    (/path/to/id_rsa.pub是刚才用于自动登录的公钥的路径,确保git账户有权访问它)
    该命令执行成功的效果是将/path/to/id_rsa.pub中的内容拷贝到了/home/git/.ssh/authorized_keys文件中,包含在# gitolite start和# gitolite end之间。在git的用户目录下创建一个repositories目录,并在其中初始化了两个版本库,其中gitolite-admin是用来管理git版本库的版本库。至此gitolite算是安装完成了。

    接下来退出git账户,再次使用ssh命令连接git账户。
    sudo ssh -i path/to/id_rsa git@localhost
    (path/to/id_rsa是与刚才那个公钥对应的私钥的访问路径)
    会发现此时链接不上git账户了,并产生了如下消息。
    hello xxxx, this is git@xxxxx running gitolite3 v3.6.3-6-gedd979c on git 1.7.0.4

                R W    gitolite-admin
                                   R W    testing
                                                   Connection to localhost closed.
    这是因为git账户目前已经作为登录gitolite的账户使用了,不能再作为一般账户使用。

    然后的任务就是对git版本库进行管理,首先要在管理git版本库的机器上把gitolite-admin版本库下载下来。
    由于我是在本机上操作的所以我的命令是下面的
    git clone git@localhost:gitolite-admin
    (非常不好意思,我的这个命令执行不成功,提示没有gitolite-admin这个版本库,这是因为登录git帐号时没有把默认目录设置为repositories。)
    目前的解决办法是在:后面写出完整路径。实际的命令是下面的
    git clone git@localhost:/home/git/repositories/gitolite-admin

    另外一个需要注意的是,需要在clone版本库之前需要将刚才的私钥拷贝到用于管理版本库的机器的用于管理版本库的账户的主目录的.ssh文件夹下面。并且要确保git和ssh有权读取这个私钥。

    (另外一个不好意思,据gitolite的官方文档说,私钥起效后clone版本库时是不需要输入密码的,但是我这里还是提示我输入密码。)

    剩余的两个问题如果有知道解决办法的烦请在回复中告知以下。我解决这个问题后,也会更新这个文档。

    非常操蛋的是,我今天又按照自己的步骤重新安装了一遍,居然以上两个问题都没有了。此次安装的时候执行的命令是gitolite/install -to $HOME/bin。

    另外一个要注意的是登录git控制台的密钥和管理gitolite的密钥不能是同一对,否则将会提示错误。

    如果两次安装希望指定不同的管理员用户,那么必须彻底卸载掉原来的安装。需要把隐藏的gitolite相关文件和版本库都删除。

  • 相关阅读:
    【HDU】4092 Nice boat(多校第四场1006) ——线段树 懒惰标记 Prime
    【POJ】2528 Mayor's posters ——离散化+线段树 Prime
    【HDU】1754 I hate it ——线段树 单点更新 区间最值 Prime
    C语言 linux环境基于socket的简易即时通信程序 Prime
    Java异常处理
    重载和重写的区别与联系
    SQL Server的优点与缺点
    Servlet基础
    C语言图形编程
    socket通讯,TCP,UDP,HTTP的区别
  • 原文地址:https://www.cnblogs.com/tgis/p/4517952.html
Copyright © 2011-2022 走看看