Можно ли зеркалировать частный репозиторий на gitlab.com по протоколу SSH?

Gitlab.com имеет возможность зеркалировать другие репозитории на их собственном сайте. (Проект -> Настройка проекта -> Зеркальный репозиторий)

Но когда я попытался сделать это, используя протокол ssh, авторизация не удалась, потому что репозиторий, который я хотел клонировать, не распознал открытый ключ Gitlab.com.

На странице указано:

Если ваш SSH-репозиторий не является общедоступным, добавьте открытый SSH-ключ сервера GitLab в удаленный репозиторий.

Дело в том, что я не смог найти вариант добавления личного ключа на Gitlab.com или загрузки открытого ключа с Gitlab.com.

Это возможно только если у вас есть собственный сервер GitLab или я что-то упустил?

3 ответа

Функция зеркального отображения Gitlab недавно была реализована в ноябре 2015 года, но, к сожалению, она доступна только для Gitlab Enterprise Edition:

Зеркалирование репозитория (только для EE) Если вы хотите сохранить зеркало репозитория в экземпляре GitLab, теперь вы можете позволить GitLab автоматически обрабатывать зеркалирование в GitLab Enterprise Edition.

Проверьте сравнение функций между выпусками Community и Enterprise Edition. Либо вы запрашиваете EE, либо используете сценарии gitlab-mirrors:

Проект gitlab-mirrors предназначен для добавления функции, которая в настоящее время отсутствует в GitLab: возможность зеркалировать удаленные репозитории. gitlab-mirrors создает копии только для чтения удаленных репозиториев в gitlab. Он предоставляет интерфейс управления CLI для управления зеркальными хранилищами (например, добавления, удаления, обновления), так что администратор может регулярно обновлять все зеркала с помощью crontab. Он работает, взаимодействуя с GitLab API, используя python-gitlab3. Также проверьте этот крутой кукольный модуль для установки и настройки gitlab-зеркал.

Я не уверен, что это сработает, но я считаю, что стоит попробовать. Чтобы получить открытый ключ от gitlab.com, я запустил следующую команду:

nmap gitlab.com --script ssh-hostkey --script-args ssh_hostkey=all

Следующие 3 открытых ключа могут быть найдены в выходных данных:

ssh-dss AAAAB3NzaC1kc3MAAACBAMPKInNPflcRle9F5Qt2j9aI0EZuWQzdXTbYvsl+ChaacqCOWRMiOmXHXqetFz6jD/6Fcqg20ZATxqSskQBaRn97O/mbH+GQk4d3zw9WAEURicE8rKJop3qGtdfFxLzrTuPAkKRDMmutT3hwZIOO8CFWOl1BiuUYTncJTeonrfAAAAFQCujauoy3Yy+ul72b/WsTECUPj9yQAAAIBIV2yyF7RZf7IYS8tsWcKP7Y5Bv9eFdbvbtsaxcFCHcmHIGoJQrIdPoueoOb5EUTYz0NgYKsKaZzDZkgFk28GsmLxKvhnPjaw0lJVSKRchEE5xVlamOlabiRMjQ7X/bAdejkBJe96AjZZL3UO4acpwfy3Tnnap0w6YCDeaxoyHpwAAAIAU+dyNaL3Hy15VIV32QwWMekvxeptUY/W03LNcgZZDoin87TE9xuQhM0qF3pi2i2a2ExuslgdttmYWvrbEz8eW+RFgvT5pKwWpalKWetHvtN3oYZP37ZIO1Y3Hd5A4YVcpYp1ccRayveLlCRwxb4HdGXT2OmYU+lmvimIR8zQ6A==

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bNKTBSpIYDEGk9KxsGh3mySTRgMtXL583qmBpzeQ+jqCMRgBqB98u3z++J1sKlXHWfM9dyhSevkMwSbhoR8XIq/U0tCNyokEi/ueaBMCvbcTHhO7FcwzY92WK4Yt0aGROY5qX2UKSeOvuP4D6TPqKF1onrSzH9bx9XUf2lEdWT/ia1NEKjunUqu1xOB/StKDHMoX4/OKyIzuS0q/T1zOATthvasJFoPrAjkohTyaDUz2LN5JoH839hViyEG82yB+MjcFV5MU3N1l1QL3cVUCh93xSaua1N85qivl+siMkPGbO5xR/En4iEY6K2XPASUEMaieWVNTRCtJ4S8H+9

_ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY=

Добавление их на ваш сервер репозитория может позволить ему правильно аутентифицировать соединение.

Согласно этому комментарию, ключ находится в /var/opt/gitlab/.ssh/id_rsa а также /var/opt/gitlab/.ssh/id_rsa.pub по умолчанию. Если ключи не существуют, вы можете создать их вручную с помощью sudo -u git -H ssh-keygen и нажимая клавишу ввода через подсказки.

Я только что попробовал это на моей установке gitlab-ee 8.7.2, и это, кажется, работает.

Другие вопросы по тегам