我刚刚安装了我的第一个本地Gitea服务器,除了SSH之外,一切正常。正常的SSH可以正常工作,但当我试图与Gitea交互时就不行了。
显示的网址是ssh://git@gitea.xxx.local:123/user/hello-world.git,为什么是"git@"?我的用户名不是"git“,但是Gitea服务器作为用户"git”运行。如果我将"git“更改为我的真实用户名,我至少可以成功地使用我的私有SSH密钥进行身份验证。如何修正URL以显示正确的用户名?
然而,如果我尝试git clone,我总是得到fatal: '/user/hello-world.git' does not appear to be a git repository
这是我的gitea/app.ini文件:
[server]
ROOT_URL = https://gitea.xxx.local/
DOMAIN = gitea.xxx.local
HTTP_PORT = 3000
SSH_DOMAIN = gitea.xxx.local
SSH_PORT = 123
DISABLE_SSH = falseGitea只监听localhost,我使用nginx作为从:443到:3000的反向代理,这对于web很好,但对SSH却不起作用。
操作系统服务器正在监听:123,我可以在那里成功地进行身份验证。如何将SSH连接转发到内部Gitea服务器?也和nginx一起?
发布于 2019-09-02 21:39:04
这是大多数Git服务器的正常和预期行为,看看GitLab给您的SSH克隆URL,您将看到它也使用git用户。
这是因为如果您的git服务器以git用户的身份运行,它需要能够访问、查看、维护并最终删除存储库中的文件。
当您通过Gitea接口添加SSH密钥时,它将向没有SSH特权的git用户添加一个授权密钥(端口转发、pty等)。以及一个强制命令,它将回调到Gitea,让它知道它试图访问哪个存储库的用户。然后,它将决定如何处理它,是否授权它,并最终将信息传递给Git以合并到存储库中。
编辑:要解决no repository部分:同样,这是正常的和预期的,因为git存储库实际上位于git用户的主文件夹中。因此,当您尝试从git用户访问group/repo.git时,git用户扩展为/home/git/group/repo.git的绝对路径,但如果以user身份登录,则会扩展到可能不存在的/home/user/group/repo.git,如果存在,则可能不一样。(用户家园就是例子,在生产上可能会有所不同)
https://serverfault.com/questions/981615
复制相似问题