通过 SSH 访问 git 存储库“似乎不是 git 存储库”

问题描述 投票:0回答:1

这是客户端中的配置: 〜/.ssh/config

Host myserver
  HostName 172.2.1.1
  User git
  Port 22
  IdentityFile ~/.ssh/id_ed25519_repo1

已通过 gitea web(SSH 密钥)成功添加并验证了密钥。

问题是我无法像这样访问 gitea 存储库:

git ls-remote myserver:user1/repo1.git
git ls-remote git@myserver:user1/repo1.git

//错误:

fatal: '/user1/repo1.git' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

但以下访问没有问题(不提示密码):

ssh git@myserver

git ls-remote http://ip:3000/user1/repo1.git

git ls-remote git@ip:user1/repo1.git

那么有哪些可能的解决方案呢?

git ssh gitea
1个回答
0
投票

我找到原因了。看似微不足道的问题,却不容易实现。

首先,我将解释每个命令为什么有效或无效。

  • 以下内容有效,因为仅与 SSH shell 访问相关,与 git 无关。

    ssh git@myserver

  • 以下内容有效,因为 git 不使用 SSH。

    git ls-remote http://ip:3000/user1/repo1.git

  • 以下内容有效,因为 git+SSH 隐式加载“~/.ssh/id_ed25519”,我错误地认为密钥应该是“id_ed25519_repo1”,此外密钥“id_ed25519”是之前通过 gitea Web UI 配置的。

    git ls-remote git@ip:user1/repo1.git

  • 以下内容不起作用,因为 git+SSH 显式加载“~/.ssh/id_ed25519_repo1” - 密钥已手动添加到authorized_keys。

    git ls-remote myserver:user1/repo1.git git ls-remote git@myserver:user1/repo1.git

因此,只需在文件中添加一个裸条目,如下所示,访问“ssh user1@myserver”或“ssh user1@real-ip”就可以很好地工作,但 git+SSH 绝对不起作用。

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIvf4l5RjqWL+kOnxpqhhGAIcIkWVSHqLbgkAzMAlYGm user1@domain

原因是缺少将 SSH 密钥链接到 git 操作的部分,这解释了为什么 SSH 身份验证正常但 git 无法识别存储库路径。 因此,将 git 连接到 SSH 的正确语法应如下所示:

command =“/usr/local/bin/gitea --config=/etc/gitea/app.ini serv key-6”,无端口转发,无X11转发,无用户rc,无-pty,限制 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAIvf4l5RjqWL+kOnxpqhhGAIcIkWVSHqLbgkAzMAlYGm user1@domain

手动编辑比较长,最好让 gitea 通过 Web UI 帮我们添加。但是出现了一个问题,自从“命令”进来后,使用“user1”进行SSH shell访问就变得不可能了。我不知道如何为同一用户同时启用 git+SSH 和 SSH 访问。我的解决方案是为纯 SSH 访问创建一个新密钥或考虑启用 PasswordAuthentication 选项。

我想分享的笔记:

  • 根据@grawity_u1686的提示,我使用命令“ssh -T -v git@myserver”来实现加载的隐式密钥。感谢@grawity_u1686 和其他人。
  • 在通过 gitea Web UI 配置密钥期间,需要运行以下命令来生成签名: echo -n 'ff5338f9...' | ssh-keygen -Y 符号 -n gitea -f 私钥路径 在我的 Windows PC 中,生成的签名总是无法验证,但在 Linux 中验证成功。
© www.soinside.com 2019 - 2024. All rights reserved.