gpt4 book ai didi

git - 为什么我可以从一台机器上克隆,但不能从另一台机器上克隆?

转载 作者:太空狗 更新时间:2023-10-29 14:00:45 24 4
gpt4 key购买 nike

我在自己的域中设置了自己的 gitlab。我一直在我的 Windows 桌面上愉快地使用它,使用 gitbash。我一直在通过 Gitlab 网络前端创建 repo 协议(protocol),然后像这样从我的本地机器推送我的代码库;

git remote add origin gitlab_user@my.gitlab.domain:my_namespace/my_repo.git

我也可以克隆,像这样;

git clone gitlab_user@my.gitlab.domain:my_namespace/my_repo.git my_repo

在我的桌面上执行这些操作都没有问题。

如果我尝试从 centOS 机器(托管我的 gitlab 域的机器,尽管它可能不总是这样)做同样的事情,系统会提示我输入 gitlab_user 密码。在此之后,相同的克隆命令告诉我 my_namespace/my_repo.git 似乎不是 git 存储库。我知道这是因为我可以从我的 Windows 机器访问它。

知道为什么当我从其他地方连接时它没有将其视为存储库,以及为什么它要求输入密码吗?

最佳答案

解决方案

综上所述,确实是因为我在gitlab的用户账户中没有添加我的.ssh公钥。解决此问题的步骤是;

  1. ssh 到我的 linux box 作为我想克隆的用户。为此,我专门创建了一个用户。
  2. ssh-keygen -t rsa -C "newuser@my.domain.com" -(-C 部分是注释,如果我忘记了,它可以帮助我弄清楚这是谁的 key 。 )
  3. 使用 cat ~/.ssh/id_rsa.pub
  4. 复制公钥的内容(同时仍以我的新用户身份登录到 linux box)
  5. 登录到 gitlab(作为有权访问您要克隆的项目的用户)并将此 ssh key 添加到该帐户,方法是粘贴您在第 4 步中刚刚复制的公钥。

现在我可以使用原始命令进行克隆;

git clone gitlab_user@my.gitlab.domain:my_namespace/my_repo.git my_repo

我学到了什么

我总是最初以用户 gitlab_user 连接到我的 gitlab 服务器。但是到达后,gitlab 将通过将我的公钥与存储在其数据库中的帐户之一相匹配来识别我声称是哪个用户帐户。 这就是为什么您不能将同一个 .ssh key 附加到多个 gitlab 帐户的原因 - gitlab 在您连接时不知道您是谁。

但是,您可以在一个帐户上放置多个(不同的) key 。例如,我需要能够从家里和办公室访问 repo,但每次都被识别为同一个 gitlab 用户。我通过在家里创建 .ssh key 并将其添加到我的 gitlab 帐户来做到这一点,并在工作中做同样的事情。两个不同的 key ,将我标识为同一个 gitlab 用户。

关于git - 为什么我可以从一台机器上克隆,但不能从另一台机器上克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18613493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com