не может использовать SSH с докеризованным Gitlab - PullRequest
0 голосов
/ 28 мая 2018

Я установил последнюю версию gitlab с помощью docker на centos 7

docker run -d --hostname git.xxxx.com \
-p 8082:80 -p 22:22 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab:Z \
-v /srv/gitlab/logs:/var/log/gitlab:Z \
-v /srv/gitlab/data:/var/opt/gitlab:Z \
gitlab/gitlab-ce:latest

Я также изменил порт ssh хоста на 10022 и позволил gitlab использовать порт 22. Gitlab работал успешно.Клонирование работало с использованием http, но не сработало при использовании ssh.

git clone git@git.xxxx.com:yphc/dt-dd-miniprogram.git

Cloning into 'dt-dd-miniprogram'...
ssh: connect to host git.xxxx.com port 22: Bad file number
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

Вывод из проверки состояния Gitlab:

root@git:/# gitlab-ctl status
run: gitaly: (pid 472) 241405s; run: log: (pid 467) 241405s
run: gitlab-monitor: (pid 474) 241405s; run: log: (pid 465) 241405s
run: gitlab-workhorse: (pid 471) 241405s; run: log: (pid 464) 241405s
run: logrotate: (pid 15611) 203s; run: log: (pid 456) 241405s
run: nginx: (pid 475) 241405s; run: log: (pid 469) 241405s
run: node-exporter: (pid 460) 241406s; run: log: (pid 459) 241406s
run: postgres-exporter: (pid 453) 241406s; run: log: (pid 452) 241406s
run: postgresql: (pid 470) 241406s; run: log: (pid 463) 241406s
run: prometheus: (pid 482) 241406s; run: log: (pid 476) 241406s
run: redis: (pid 396) 241408s; run: log: (pid 395) 241408s
run: redis-exporter: (pid 455) 241406s; run: log: (pid 454) 241406s
run: sidekiq: (pid 473) 241406s; run: log: (pid 468) 241406s
warning: sshd: unable to open supervise/ok: access denied
run: unicorn: (pid 466) 241406s; run: log: (pid 458) 241406s

предупреждение: sshd: невозможно открыть supervise / ok: доступ запрещен

Я попробовал команду ssh в контейнере gitlab, который работал.Я также добавил порт 22 в брандмауэр.

[root@localhost zones]# firewall-cmd --list-all 
    public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp2s0
  sources: 
  services: ssh dhcpv6-client
  ports: 2022/tcp 10022/tcp 22/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

И когда я закрываю брандмауэр, он говорит:

    Cloning into 'dt-dd-miniprogram'...
ssh_exchange_identification: Connection closed by remote host
fatal: Could not read from remote repository.

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

Я долго смотрел в Интернете, но ничего не мог найти,Буду признателен за любую помощь или идеи о том, как решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Я делаю то же самое на другом centos 7, все в порядке, поэтому я думаю, что в ОС есть какая-то ошибка, докер gitlab в порядке, но я не могу найти его до сих пор, спасибо

0 голосов
/ 25 сентября 2018

Я попал в ту же ситуацию с официальным образом докера gitlab-ce после миграции с kvm.

root@gitlab:/opt/gitlab# /opt/gitlab/embedded/bin/sv start sshd
warning: sshd: unable to open supervise/ok: access denied

Я обнаружил, что этот sv генерирует ошибку:

root@gitlab:/opt/gitlab# /opt/gitlab/embedded/bin/sv start sshd
warning: sshd: unable to open supervise/ok: access denied

Поскольку канал / opt / gitlab / sv / sshd / supervise / ok недоступен для пользователя root:

root@gitlab:/opt/gitlab/sv/sshd/supervise# cat ok
cat: ok: Permission denied

И в качестве теста я обновил его с разрешениями 777, но все еще нетluck

root@gitlab:/opt/gitlab/# /opt/gitlab/embedded/bin/sv start sshd
fail: sshd: runsv not running

Обходной путь, который я использовал, находится в моем Dockerfile, который основан на gitlab-ce: latest:

RUN sed -i '/gitlab-ctl reconfigure/a service ssh start' /assets/wrapper

Это запустит ssh, и теперь я могу соединиться сgit user через ssh, чтобы нажать и вытащить:)

Не забывайте, что вам нужно правильно настроить env для портов, которые вы хотите использовать https://docs.gitlab.com/omnibus/docker/

  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://gitlab.m31.com:3080'
      gitlab_rails['gitlab_shell_ssh_port'] = 3022

Таксейчас все работает, но имейте в виду, что это странный / уродливый обходной путь, и я уверен, что есть лучший способ сделать эту работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...