【问题标题】:Sourcetree on Mac connecting to Gitolite asks for authentication连接到 Gitolite 的 Mac 上的 Sourcetree 要求进行身份验证
【发布时间】:2025-12-19 05:35:16
【问题描述】:

我们最近设置了 Gitolite 服务器。一切似乎都很好。我可以毫无问题地连接到它。

已经设置了一个新用户,他在 Mac 上并尝试使用 SourceTree。我能让他连接的唯一方法是让他尝试 ssh 到服务器,然后我输入密码(之后退出)。否则,系统会一直要求输入该服务器的密码。

这是正常行为吗? 非系统管理员用户如何访问 gitolite?

【问题讨论】:

    标签: gitolite


    【解决方案1】:

    Gitolite 基于forced command,表示非交互式会话。
    所以:

    • 永远不要输入密码(假设这里没有密码保护的私钥)。
      (详见“how gitolite uses ssh”)。
    • 任何“非系统管理员”都不应获得对 gitolite 服务器本身的访问权限。

    所以他只需要一个存储在~/.ssh 中的公钥(确保他的home.ssh 都不是组或全局可写的),在gitolite-admin/keys 中注册并在gitolite 服务器上发布@ 987654329@文件。

    从那里,如“Sourcetree and Gitolite”中所述:

    如果您要克隆远程 git 存储库,则需要跳出 Source path/ URL 字段以激活克隆按钮。
    届时将验证该网址。

    使用 gitolite 的 url 不需要特殊语法,甚至尊重 ssh conf 文件中的主机条目。所以在我的情况下,gitolite:workrepo 的 url 就足够了。

    【讨论】:

    • 感谢 VonC,“gitolite 如何使用 ssh”特别有用。不知何故,我认为 gitolite 将密钥添加到了 authorized_keys,但我发现我需要手动完成。
    • @RogerI 是的,Gitolite 会自动将公钥添加到 authorized_keys 文件中,将该密钥链接到 gitolite-shell 脚本(至少对于 gitolite v3,又名 g3)。我不建议手动添加密钥。
    • 嗯 ...我在另一台 Mac 上再次尝试(不同的用户)。在服务器上,她的 pub 密钥似乎已正确添加到 authorised_keys,在她自己的机器上 known_hosts 有一个服务器条目。但是,当我尝试添加“测试”存储库时,它仍然要求输入密码。弹出窗口标题为“需要密码”,在“对于主机 上的用户 git”下方。密钥是在我的 Mac 上生成并复制过来的。
    • @RogerI 如果私钥没有被密码保护,那么公钥没有被正确复制到authorized_keys (但如果通过 gitolite 应该是通过推送gitolite-admin repo,其中包含正确名称的 pub 密钥),或者它已被复制,但名称错误:公钥的名称必须是:yourLoginName.pub
    • 我终于让它工作了,它需要两个更改:1) 删除密码 2) 使用配置文件。这是因为我使用以下命令生成了密钥:“ssh-keygen -t rsa -C "Joe Bloggs" -f ~/.ssh/joebloggs"。也许如果我允许它使用默认文件名,它会起作用吗?