Gitea - SSH验证成功但无法推送到远程仓库。

4
我的Gitea版本是1.2.3,安装在一台Gentoo专用服务器上。 我在另一台专用服务器上使用我的用户(而不是root用户)创建了SSH密钥。
在Gitea GUI中,我创建了一个组织和该组织的一个仓库,我的Gitea用户是所有这些内容的所有者(而不是root账户)。
当我进入[组织]/[我的仓库] > 设置 > 部署密钥时,我会添加远程用户的ssh密钥。Gitea将该密钥添加到.ssh git用户(git用户是gitea的用户)的authorized_key文件中。
从我的远程设备上,我尝试执行以下操作:
ssh git@[gitea_server_ip]

我收到了这条信息:

Hi there, You've successfully authenticated, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.

所以 SSH 工作良好,但是当我尝试推送或克隆时,会出现以下错误信息:
git push -u origin master

答案:

Gitea: Key permission denied  
Cannot push with deployment key: 5 
fatal: Could not read from remote repository

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

看起来是一个Gitea认证问题,但我找不到答案,谢谢。


据我所知,推送时使用的ssh密钥必须是用户密钥,而不是部署密钥。请参见https://github.com/go-gitea/gitea/issues/938。 - phd
好的,那我应该使用什么?因为我是用我的远程用户生成密钥并将其用作部署密钥,这是错误的方式吗?感谢您的帮助。 - Tarkaros
我在Github(1, 2)和Gitlab上找到了关于部署密钥的信息。我认为这与gogs/gitea类似——您需要创建新的或使用现有的用户密钥,将其公钥添加到gitea帐户中,并重新配置ssh以使用其私钥连接到服务器。 - phd
除了“重新配置ssh使用私钥连接到服务器”这部分之外,我已经按照你要求做了所有的事情。你具体是什么意思?因为我不能把私钥给其他服务器,对吧? - Tarkaros
你现在拥有两个 SSH 密钥对,分别是用户密钥和部署密钥。您需要配置 SSH,以允许 git 使用其中之一。当然,您不会发布您的私钥。 - phd
我终于找到了解决办法,但这似乎是一种奇怪的方法。 我把密钥放在了我的gitea用户中,他是组织和项目的所有者,它能够工作。所以我想我会为服务器创建一个用户,也许这是最恰当的方式。非常感谢您的帮助,您提供的所有链接都帮助我找到了答案。 - Tarkaros
1个回答

0

如果您使用没有写入权限的部署密钥或者写入选项在您的Gitea版本中没有完成实现,就会出现此消息。我收到了以下错误信息:

Gitea: Key permission denied Cannot push with deployment key: 14 fatal: Could not read from remote repository

如果此帐户只有读取权限,则可能会出现此问题。

您可以使用标准的ssh认证:<gitea:port>/user/settings/keys,添加您的公钥,然后应该就可以正常工作了。


什么是“标准SSH身份验证”? - Marcin Pevik
标准的SSH身份验证使用类似Gitea的authorized_keys文件。 - f b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接