gitolite:可以通过ssh连接,不能克隆

ste*_*eve 5 git ssh gitolite

我使用本教程在服务器上安装了gitolite .这属于"非根"方法.

当我尝试将gitolite-admin克隆回我的客户端时,它失败了.我收到此错误消息:

git clone gitolite@server.com:gitolite-admin
Cloning into gitolite-admin...
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

也:

git clone ssh://gitolite@server.com:gitolite-admin
Cloning into gitolite0admin...
Using username "git-upload-pack 'gitolite".
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我也尝试追加.git到repo名称的末尾,并且我也尝试添加repositories/gitolite-admin(由上面链接的教程中的错误建议)以及这两者的组合并且都没有工作.我在谷歌上找不到关于"使用用户名"位的结果,这引起了我的兴趣.

我可以通过SSH连接到本机,它告诉我,我有机会与R和W gitolite-admin.那么,SSH正在运作?

Von*_*onC 7

检查关于gitolite的ssh 部分:你可以server.com通过以下ssh方式连接:

  • 你的ssh密钥已注册 server.com@~/.ssh/authorized_keys
  • 该密钥与gitolite没有关系'没有" command="选项,这意味着"无论传入用户要求做什么,都强行运行此命令").
    您处于交互式会话中,能够执行您喜欢的任何命令.

关于第三方教程我完全不喜欢的是它尝试对git用户和ssh非root用户使用相同的名称

你应该分开:

  • 非root用户(不是帐户,只是一个ssh密钥,将链接到gitolite,具有gitolite-adminrepo的管理员权限)
  • 托管帐户,应该是' git',而不是gitolite,正是为了 避免两种使用模式之间的混淆:
    • git(直接server.com登录,这里没有ssh):执行git命令所需的交互式会话(比如在服务器上克隆gitolite repo,并执行gitolite/src/gl-system-install)
    • ssh git@server.com这将使用你的~/.ssh/id_rsa(.pub)公钥和私钥,作为gitolite 的公钥和私钥,将授权你克隆gitolite-admin回购并推回回购

再说一次:
'gitolite'不是一个真正的帐户,只有一个被授权执行命令的名称server.com为' git'(实际的"托管帐户",如"托管git服务和repos").
其他所有的git的用户也将在执行Git命令server.comgit.
并且该特定用户(gitolite)将通过强制命令机制链接到gitolite授权层,并在gitolite安装期间设置权限,以授予该"用户"克隆,修改和回推gitolite-admin回购的权限.
(与你将添加的所有其他ssh git用户相比,这是唯一的特殊性:他们将无法访问特定的git repo,这是gitolite-admin一个)

试图用同名来命名这两个只是在寻找麻烦.

我不喜欢使用公钥/私钥的默认命名约定,所以我更喜欢客户端使用目标用户的名称定义这些键:

~/.ssh/gitolite.pub
~/.ssh/gitolite
Run Code Online (Sandbox Code Playgroud)

然后我定义一个配置文件:~/.ssh/config在其中:

host gitolite
     user git
     hostname server.com
     identityfile ~/.ssh/gitolite
Run Code Online (Sandbox Code Playgroud)

(注意用户:总是git)
然后我可以克隆我的gitolite-amin回购:

git clone gitolite:gitolite-admin
# modify locally
# git add -A ; git commit -m "my modifs"
git push origin master
Run Code Online (Sandbox Code Playgroud)