自己之前使用gitosis管理用户,长时间没有使用了,期间电脑重新安装了,导致之前电脑里ssh的私有key丢了,再使用时出现了一些问题,就随手记一下吧。
■ 指定SSH端口
ssh经常会修改为其它的端口,这种情况访问不能象ssh命令中那样加 -p参数,而要像下面这样:
git clone ssh://用户名@主机:ssh端口/项目名
如:
git clone ssh://[email protected]:8989/myproject.git
需要注意的是在ssh使用默认端口时 ":"后面可直接接项目名(xxxx.git),
但这里加了端口后需要追加分割符号,千万别再加一个":"来分割。而使用"/"分割
这个不需要指定全路径, /myproject.git 这里的myproject.git只是在仓库中的项目名而以。
■public key认证 及 相对路径的问题
因为我是想配置一些权限及追加public key, 所以用gitosis-admin这个项目举例:
当我clone gitosis-admin.git项目时,出现下面的错误:
git clone ssh://[email protected]:8989/gitosis-admin.git
Cloning into 'gitosis-admin'...
[email protected]'s password:
fatal: '/gitosis-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
这里有两个错误
1. [email protected]'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
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://[email protected]: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管理了吧。