安装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相关文件和版本库都删除。
安装gitolite,并ssh公钥无密码登录的更多相关文章
- SSH公钥认证登录
概述: SSH登录的认证方式分为两种,一种是使用用户名密码的方式,另一种就是通过公钥认证的方式进行访问, 用户名密码登录的方式没什么好说的,本文主要介绍通过公钥认证的方式进行登录. 思路: 在客户端生 ...
- linux ssh scp无密码登录
一. 应用场景 假如你Linux Client是客户端, Server为服务器,用户名为user.现在要配置从Client到Server的无密码SSH登录或者无密码的scp拷贝. 例如客户端Clien ...
- ssh设置无密码登录
设置无密码登录此处设为有主机a登录到主机b 1.在主机a生成公钥 ssh-keygen -t rsa 之后有导航(其实一直回车就可以) 2.此时在主机a/home/YOURHOSTNAME/.ssh ...
- ssh配置无密码登录
1.在master机器上生成公钥: [root@master ~]# ssh-keygen -t rsa 注:一直按enter键就可以生成了 Generating public/private ...
- 对于mariadb安装后可以默认使用无密码登录的问题解决方案
mariadb安装后默认可以无密码登录 所以首先我们要设置root用户的密码 mysqladmin -u root -p password 密码 [遇到enter直接enter就行,注意,如果是重新设 ...
- cygwin安装sshd服务并实现无密码登录
http://blog.csdn.net/cybercode/article/details/7080743 这篇文章主要是为我在win7(64位)下搭建hadoop环境所准备的.首先参照在cygwi ...
- ssh的无密码登录
实现步骤如下: 1 生成一对公钥和私钥 $ ssh-keygen #以上命令等价于 ssh-keygen -t rsa #-t:指定密钥的类型,默认为SSH-2 的rsa类型; 运行上面的命令后,系统 ...
- 配置SecureCRT以SSH公钥方式登录服务器
为了更方便管理服务器,CRT一个功能非常方便.那就是可以使用私钥认证通过后直接连接,而且对于密码保护比较安全一点. 首先配置ssh Port 32812Protocol 2UseDNS noPubke ...
- ssh 配置无密码登录
下框中在管理机上运行: [root@master ~]# ssh-keygen -t rsa #它在/root/.ssh下生成id_rsa和id_rsa.pub两个文件 [root@master ~] ...
随机推荐
- 【如何快速的开发一个完整的 iOS 直播 app】(美颜篇)
来源:袁峥Seemygo 链接:http://www.jianshu.com/p/4646894245ba 前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播 ...
- vba用http发送xml所需技术
1.代理(invoke) CallByName 函数 •执行一个对象的方法,或者设置或返回一个对象的属性. •语法 •CallByName(object, procname, calltype,[ar ...
- linux记录登录ip方法
PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...
- 重构17-Extract Superclass(提取父类)
当一个类有很多方法希望将它们“提拔”到基类以供同层次的其他类使用时,会经常使用该重构.下面的类包含两个方法,我们希望提取这两个方法并允许其他类使用. public class Dog { public ...
- jQuery全选与反选,且解决点击只执行一次的问题
<html> <head> <script src="jquery-1.11.1.min.js" type="text/javascript ...
- 从模态视图push到另一个视图
//需要给模态视图创建一个Nav,然后再调用presentViewController if (_loginVC == nil) { _loginVC = [[LoginViewController ...
- 文件上传利器SWFUpload入门简易教程
凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...
- 查询sql 并且读取
//显示地址 //VBSBegin // Set obj = GetObject("winmgmts:\\.\root\cimv2") // Set IPConfigSet = o ...
- Ajax请求ashx 返回 json 格式数据常见问题
问题:ashx 返回的字符串json格式,在前台ajax自动解析失败. 问题分析:经过排查,发现是拼接json时出现” ’ “单引号,jquery无法解析,用” “ “双引号才可以.例如: stri ...
- 如何让R代码按计划执行
应用场景:你编写了R代码,每天对提交的数据进行分析,你希望它你吃饭的时候执行完毕,生成图表. 那么你需要安装taskscheduleR的包. 怎么操作,看帮助呗.