`
tomxu
  • 浏览: 15941 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

git + gitosis + ssh的几点注意

    博客分类:
  • git
阅读更多

自己之前使用gitosis管理用户,长时间没有使用了,期间电脑重新安装了,导致之前电脑里ssh的私有key丢了,再使用时出现了一些问题,就随手记一下吧。

 

■ 指定SSH端口

ssh经常会修改为其它的端口,这种情况访问不能象ssh命令中那样加 -p参数,而要像下面这样:

git clone ssh://用户名@主机:ssh端口/项目名

如:

git clone ssh://git@192.168.1.1:8989/myproject.git

 

需要注意的是在ssh使用默认端口时  ":"后面可直接接项目名(xxxx.git),

但这里加了端口后需要追加分割符号,千万别再加一个":"来分割。而使用"/"分割

这个不需要指定全路径, /myproject.git 这里的myproject.git只是在仓库中的项目名而以。

 

■public key认证 及  相对路径的问题

因为我是想配置一些权限及追加public key, 所以用gitosis-admin这个项目举例:

当我clone  gitosis-admin.git项目时,出现下面的错误:

git clone ssh://git@192.168.1.1:8989/gitosis-admin.git

Cloning into 'gitosis-admin'...

git@192.168.1.1's password: 

fatal: '/gitosis-admin.git' does not appear to be a git repository

fatal: The remote end hung up unexpectedly

 

这里有两个错误

1. git@192.168.1.1's password: 

当然这里只要输入正确的git的用户名和密码就可以了,或都你将你的public key放到git用户的.ssh下手动导入 cat 到authorized_keys文件中,但同样会出下

 

fatal: '/gitosis-admin.git' does not appear to be a git repository

fatal: The remote end hung up unexpectedly

这个错误。
网上一般的解决方法是将 /gitosis-admin.git 换成全路径,这样的确可以clone下来,也可以正常提交,但这样就绕过了gitosis的管理,这不是我想要的结果。

 

 

2. fatal: '/gitosis-admin.git' does not appear to be a git repository 

如果不是gitosis-admin的成员或没有git用户通常的访问权限,你就得找他们来帮你弄了。

其实只要是通过正常gitosis的配的手顺,是不会出现这个问题的。

 

将你的public key(如 temp.pub) 放到 gitosis-admin/keydir目录下,修改gitosis.conf,追加用户到gitosis-admin项目中

 

[group gitosis-admin]

writable = gitosis-admin

members = admin temp

然后对这两个文件追加,提交,push即可。

git add gitosis.conf

git add temp.pub

git commit -m "XXXXX"

git push origin master

 

然后你再 git clone ssh://git@192.168.1.1:8989/gitosis-admin.git

就不会再出现上面的两个错误,可以正常使用相对路径了。

 

关键的地方在于,gitosis会将你的xxx.pub的内容导入到git用户的.ssh/authorized_keys"文件,

gitosis导入的格式和通常的格式不太一样,例如

command="gitosis-serve temp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

看一下就知道为什么自己导入的会绕过gitosis管理了吧。

 

分享到:
评论

相关推荐

    git详解-PDF

    - **Gitosis**:用于管理多个Git仓库的工具。 - **Gitolite**:更强大的仓库管理工具,支持细粒度的访问控制。 - **Git守护进程**:提供一个轻量级的服务端,支持通过网络访问Git仓库。 - **Git托管服务**: - **...

    ProGit.pdf

    ### ProGit.pdf 知识点概述 #### 一、Git简介与基础知识 **1.1 关于版本控制** - **本地版本控制系统**:早期的版本控制系统通常存储在本地磁盘中,例如 RCS 和 CVS,这类系统通过记录文件的每次变更来追踪版本...

    Pro Git 中文版 免积分

    ### Pro Git 中文版知识点概览 #### 一、Git完全介绍:从基础命令到内部实现 **Git**是一款分布式版本控制系统,广泛应用于软件开发领域,用于管理代码变更历史、协同开发等。《Pro Git》这本书是学习Git的绝佳...

    《Pro Git》,简体中文,2013-08-21构建,文泉驿字体

    Git的基础包括以下几点: - 直接记录快照,而非差异比较; - 近乎所有操作都是本地执行; - 时刻保持数据完整性; - 多数操作仅添加数据; - 文件的三种状态:已提交、已修改、已暂存。 用户在初次运行Git之前需要...

    Pro Git中文版本PDF档

    Git是一种流行的版本控制系统,它用于跟踪源代码文件的历史...希望本篇知识点能帮助您深入理解Git的各个方面,无论您是刚刚起步的初学者,还是希望进一步深化理解的高级用户,都能在Git的世界中找到自己的定位和用途。

Global site tag (gtag.js) - Google Analytics