自己之前使用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管理了吧。
分享到:
相关推荐
- **Gitosis**:用于管理多个Git仓库的工具。 - **Gitolite**:更强大的仓库管理工具,支持细粒度的访问控制。 - **Git守护进程**:提供一个轻量级的服务端,支持通过网络访问Git仓库。 - **Git托管服务**: - **...
### ProGit.pdf 知识点概述 #### 一、Git简介与基础知识 **1.1 关于版本控制** - **本地版本控制系统**:早期的版本控制系统通常存储在本地磁盘中,例如 RCS 和 CVS,这类系统通过记录文件的每次变更来追踪版本...
### Pro Git 中文版知识点概览 #### 一、Git完全介绍:从基础命令到内部实现 **Git**是一款分布式版本控制系统,广泛应用于软件开发领域,用于管理代码变更历史、协同开发等。《Pro Git》这本书是学习Git的绝佳...
Git的基础包括以下几点: - 直接记录快照,而非差异比较; - 近乎所有操作都是本地执行; - 时刻保持数据完整性; - 多数操作仅添加数据; - 文件的三种状态:已提交、已修改、已暂存。 用户在初次运行Git之前需要...
Git是一种流行的版本控制系统,它用于跟踪源代码文件的历史...希望本篇知识点能帮助您深入理解Git的各个方面,无论您是刚刚起步的初学者,还是希望进一步深化理解的高级用户,都能在Git的世界中找到自己的定位和用途。