无法通过 SSH 连接到 Gitlab

Posted

技术标签:

【中文标题】无法通过 SSH 连接到 Gitlab【英文标题】:Can't SSH into Gitlab 【发布时间】:2021-08-28 12:16:47 【问题描述】:

我有一个通过 docker-compose 运行的 gitlab ce 映像

gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.theboohers.org'
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '8000:80'
      - '8001:443'
      - '22:22'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    networks:
      - app-network

我可以通过 https 登录(使用 nginx 代理),但我无法通过 ssh 进行身份验证。

我确认端口 22 正在监听:

nc -vz gitlab.theboohers.org 22
Connection to gitlab.theboohers.org (194.195.222.5) 22 port [tcp/ssh] succeeded!

在详细输出中,我看到提供了密钥:debug1: Offering public key: /home/deploy/.ssh/id_rsa RSA SHA256

但我遇到了错误: git@gitlab.theboohers.org: Permission denied (publickey).

完整详细的 ssh 连接:https://gist.github.com/tbbooher/336e1bb277456efde6003111a56f3118

【问题讨论】:

您是否使用相同的端口通过 SSH 连接到主机?可能您的密钥仅在容器 authorized_keys 中(因为您是通过 webui 添加的),但不在实际主机上。我建议您为主机 SSH 和 gitlab SSH 使用不同的端口。 我会检查的。他们可能是问题所在。 你是正确的。 【参考方案1】:

为了能够与 ssh 连接,我必须在 GITLAB_OMNIBUS_CONFIG 环境变量中添加以下行:

    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://$GITLAB_HOST'
        # ...
        gitlab_rails['gitlab_shell_ssh_port'] = $SSH_PORT

并打开端口(如您所愿):

    ports:
      - $SSH_PORT:22

在那之后,我可以使用以下网址克隆存储库:

git clone ssh://git@$GITLAB_HOST:$SSH_PORT/$REPOSITORY.git

请注意,端口 22 已被使用,我必须设置另一个。

【讨论】:

顺便说一句,$VARIABLE 名称是怎么回事——我使用 $VARIABLE @bonhofer 在这种情况下,它应该没关系。但是,图像中有一个环境变量SSH=FOO 和一个SSH_PORT=22。然后$SSH_PORT 将产生FOO_PORT,而$SSH_PORT 将产生22

以上是关于无法通过 SSH 连接到 Gitlab的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 ssh 连接到 Github,无法访问 .ssh.config

通过 SSH 连接 vscode 到 gitlab 的问题

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

无法通过 python 通过 SSH 连接到 postgres 服务器

无法通过 SSH 连接到家用计算机 [关闭]

无法通过 SSH 连接到曾经正常工作的 GCP 虚拟机实例