无法通过新 GitLab 容器上的 ssh 密钥进行身份验证

Posted

技术标签:

【中文标题】无法通过新 GitLab 容器上的 ssh 密钥进行身份验证【英文标题】:Can't authenticate via ssh key on new GitLab container 【发布时间】:2021-05-03 04:54:50 【问题描述】:

我最近设置了一个新的 GitLab docker 容器,尽管其他一切都运行良好,但我无法通过 ssh 对其进行身份验证。

我按照here 的指示写信,但没有成功。 无论我生成何种密钥类型,无论客户端(Linux、Windows git-bash)如何,服务器都会立即拒绝公钥并且不会提示输入密码。

调试显示如下:

debug1: Offering public key: /c/Users/[user]/.ssh/id_ed25519 ED25519   SHA256:[SHA-256]
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51

也许这是显而易见的事情,但我无法完全弄清楚,并且没有任何故障排除步骤能够提供帮助。 附带说明一下,ssh 端口是非标准的,尽管我是通过新端口访问的。我还仔细检查了服务器和客户端都启用了 ssh。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

先检查是否类似于gitlab-org/gitlab-foss issue 18371"docker omnibus gitlab denied ssh public key"

在我的情况下,问题是 docker 容器公开的 ssh 套接字与我的服务器的套接字不匹配。 它有助于在 10022 等不同的端口上公开它,并像这样重新配置 gitlab:

gitlab_rails['gitlab_shell_ssh_port'] = 10022

理想情况下,您需要停止并重新启动 ssh 守护程序(服务器端、容器端,如 in this thread 所示)

usr/sbin/sshd -d

这将允许您检查:

如果收到 SSH 请求 如果因任何原因被阻止

【讨论】:

以上是关于无法通过新 GitLab 容器上的 ssh 密钥进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab - 无法通过 SSH 克隆,但 SSH 可以自己工作

通过 SSH 连接 vscode 到 gitlab 的问题

GitLab Runner CI 管道内的 SSH 连接无法验证主机密钥

ssh:无法解析主机名(Docker、gitlab-ce)

你如何找到你的 GitLab 主机名(以测试你的 SSH 密钥)?

最简单的 Mac配置gitlab ssh密钥方法