Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100069
  • 博文数量: 16
  • 博客积分: 530
  • 博客等级: 下士
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-17 23:25
文章分类

全部博文(16)

文章存档

2014年(1)

2012年(2)

2011年(11)

2010年(2)

我的朋友

分类: LINUX

2014-04-28 17:05:03

一. ssh登录的烂事:
git的克隆失败很多时候都是ssh引起的,一大堆问题,网上很多详尽的教程给出了正规的解决方案。如果正规的药方还是无效的话,以下偏方逐个来试试吧,做好折腾的准备。

1. 用公钥认证登录时,rsa-key的内容放在登录用户根目录中的.ssh/authorized_keys文件,这点资料到处都有。一些折腾死人的小细节无人提及:

(1)ssh能通过公钥认证登录,但git clone git@server.name:gitolite-admin.git却提示访问错误,试试把.ssh目录和authorized_keys文件的拥有者和组改为root
sudo chown root:root .ssh
cd .ssh
sudo chown root:root authorized_keys
还不行的话,再试试把目录和文件的写权限给去掉
sudo chmod 755 authorized_keys
cd ..
sudo chmod 755 .ssh
目录的写权限有时候真的会折腾死人,新手一般不会去关注 rwxr-x--- 的含义和作用,没多少人能研究透linux和应用程序究竟在何处处理这个权限

(2)authorized_keys文件的内容,一般每行开头内容都是 command="$(HOME)/bin/gitolite-shell git",其含义是此账号使用ssh登录时,会强制使用gitolite-shell,并且本次登录使用的用户名为git。
为了区分使用相同登录账号的不同用户,我们可以给每个rsa-key分配不同的用户名:
command="/var/git/bin/gitolite-shell Zhang",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty, ssh-rsa AAAAB3N......lIC8SQ== ZhangSan
command="/var/git/bin/gitolite-shell Li",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty, ssh-rsa AAAAB3N......Hy6ZQ== LiSi
这样,虽然这两人都使用git clone git@server.com:git-admin.git,但在gitolite中,这两人对应的用户名为 Zhang 和 Li。

(3)如果在authorized_keys中,没有强制命令command="$(HOME)/bin/gitolite-shell git",则默认的路径是$(HOME),克隆git clone git@server.com:gitolite-admin.git时,会提示gitolite-admin.git不是一个repositories的错误,即在登陆账号下的根目录中找不到gitolite-admin.git。如果克隆时指定路径git clone git@server.com:repositories/gitolite-admin.git,则克隆成功,但是push时肯定失败,原因是缺少环境变量。此环境变量是 gitolite-shell 执行时设定的,所以,我们需要使用强制命令。

(4)用户名Zhang和Li需要出现在.gitolite/conf/gitolite.conf中
repo gitolite-admin
    RW+     =   git Zhang Li
git是默认的gitolite用户名,Zhang和Li需要自己后面添加。但gitolite.conf文件的修改要先克隆gitolite-admin.git下来,因此,gitolite默认安装时,是只有git用户可以克隆gitolite-admin的,所以,管理员对应的.ssh/authorized_keys文件内的rsa-key,还是先使用git的用户名吧
command="$(HOME)/bin/gitolite-shell git",......
阅读(2096) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~