安装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

设置公钥自动登录(因为是本机所以是[email protected])
sudo ssh-copy-id [email protected]

设置公钥自动登录如果失败,还可以切换到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 [email protected]
第一次链接会提示未知的主机是否继续链接,点击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 [email protected]
(path/to/id_rsa是与刚才那个公钥对应的私钥的访问路径)
会发现此时链接不上git账户了,并产生了如下消息。
hello xxxx, this is [email protected] 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 [email protected]:gitolite-admin
(非常不好意思,我的这个命令执行不成功,提示没有gitolite-admin这个版本库,这是因为登录git帐号时没有把默认目录设置为repositories。)
目前的解决办法是在:后面写出完整路径。实际的命令是下面的
git clone [email protected]:/home/git/repositories/gitolite-admin

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

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

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

时间: 2024-10-09 23:05:44

安装gitolite,并ssh公钥无密码登录的相关文章

ssh配置无密码登录,免密钥登录

前提,机器A,B,均为RedHat Linux操作系统,均有用户user 1.以用户名user登录,在A机器上执行 ssh-keygen -t rsa 一路回车,不需要输入密码 执行该操作将在/home/user/.ssh下生成id_rsa, id_rsa.pub文件,其中id_rsa.pub是公钥. 2.在B机器上做步骤1或自行创建/home/user/.ssh文件夹,注意文件夹权限设置为700,将id_rsa.pub拷贝到B机器上 scp id_rsa.pub B:~/.ssh/A.id_r

SSH 实现无密码登录

今天生产要用sftp(ssh+ftp扩展模式)连接远程,但是每次都输入密码,用户不是root最后发现配置完了还是连接不上,最终查找为权限问题.所以总结一下不输入密码连接.ssh 无密码登录要使用公钥与私钥.简单理解为A-->B 那么A有私钥.B有A的公钥即可.linux下可以用用ssh-keygen生成公钥/私钥对(rsa或者dsa算法生成), CentOS配置SSH无密码登录需要3步: 生成公钥和私钥 导入公钥到远程服务器认证文件,更改权限 测试 有机器A(192.168.1.155),B(1

linux ssh scp无密码登录

一. 应用场景 假如你Linux Client是客户端, Server为服务器,用户名为user.现在要配置从Client到Server的无密码SSH登录或者无密码的scp拷贝. 例如客户端Client(10.1.10.125) 要 ssh 或者scp 到服务器Server(10.1.10.129),125端命令如下 ssh [email protected] scp ** [email protected] ** 二. 实现方法 1:在Client(10.1.10.125)上执行ssh-key

ssh设置无密码登录

设置无密码登录此处设为有主机a登录到主机b 1.在主机a生成公钥 ssh-keygen -t rsa  之后有导航(其实一直回车就可以) 2.此时在主机a/home/YOURHOSTNAME/.ssh下面有一个id_rsa 和 id_rsa.pub 3.查看在主机b的/home/YOURHOSTNAME 下有一个.ssh文件夹(如果没有的话就建一个)mkdir .ssh 4.把主机a的id_rsa.pub文件拷贝到主机b的.ssh文件夹下且把名字重命名为authorized_keys scp .

Linux 通过SSH实现无密码登录

step1. 在deployNode上生成密钥 我当前用户是ceph,在 .ssh/目录下执行命令   ssh-keygen -t rsa [[email protected] .ssh]$ ls ceph.log config id_rsa id_rsa.pub known_hosts 会发现该目录下生成两个文件,id_rsa, id_rsa.pub step2. 将id_rsa.pub复制到其他节点下对应用户目录的.ssh/目录下,并执行命令 cat id_rsa.pub >> autho

cygwin安装sshd服务并实现无密码登录

http://blog.csdn.net/cybercode/article/details/7080743 这篇文章主要是为我在win7(64位)下搭建hadoop环境所准备的.首先参照在cygwin使用总结这篇文章在cygwin中安装所必须得软件包,然后如下进行操作: [plain] view plaincopy sony@sony-VAIO~ $ ssh-host-config *** Info: Generating /etc/ssh_host_key *** Info: Generat

hadoop ssh localhost无密码登录

首先确保安装SSH server: sudo apt-get install openssh-server 启动SSH server: sudo service ssh start ssh localhost #检查ssh是否正常启动 安装后,可以使用如下命令登陆本机: ssh localhost 此时会有如下提示(SSH首次登陆提示),输入 yes .然后按提示输入密码 hadoop,这样就登陆到本机了. 但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便. 有以下两种实现

ssh配置无密码登录

1.在master机器上生成公钥: [[email protected] ~]# ssh-keygen -t rsa    注:一直按enter键就可以生成了 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase

配置SecureCRT以SSH公钥方式登录服务器

为了更方便管理服务器,CRT一个功能非常方便.那就是可以使用私钥认证通过后直接连接,而且对于密码保护比较安全一点. 首先配置ssh Port 32812Protocol 2UseDNS noPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysPasswordAuthentication noMaxAuthTries 60 操作分为两部分: 1.linux服务器操作: 首先生成公钥私钥 ssh-keygen -t dsa -