Клон мерзавца по доступу запрещен SSH только с определенного сервера

У меня есть сервер Ubuntu 12.04 в моей офисной сети, которая используется для хостинга нашего мерзавца repos. Сервер выполняет Gitlab 7.1.1 и имеет SSH на нестандартном порте.

Это работает отлично на всех внутри и снаружи офисной сети за одним исключением. Исключением является сервер, которым управляют, с хостинговой компанией, таким образом, у меня только есть ограниченный доступ к нему.

Когда я пытаюсь клонировать repo на нестандартном порте, он испытывает таймаут. Я предполагаю, что это вызвано тем, что исходящий порт заблокирован хостинговой компанией. Для решения этого я устанавливаю перенаправление портов на своем офисном маршрутизаторе для передачи входящего трафика на порте 22 к моему нестандартному порту на сервере мерзавца. Я протестировал путем клонирования от Океанского VPS Digial, не указывая порт, и он хорошо работал.

Но проблематичный сервер теперь дает следующую ошибку:

Access denied.
fatal: The remote end hung up unexpectedly

Сервер мерзавца регистрирует соединение SSH, сделанное, и принимающий открытый ключ, как показано в /var/log/auth.log:

Jan 20 15:09:07 gitlab sshd[3043]: Accepted publickey for git from 10.0.1.254 port 60771 ssh2
Jan 20 15:09:07 gitlab sshd[3043]: pam_unix(sshd:session): session opened for user git by (uid=0)
Jan 20 15:09:09 gitlab sshd[3162]: Received disconnect from 10.0.1.254: 11: disconnected by user
Jan 20 15:09:09 gitlab sshd[3043]: pam_unix(sshd:session): session closed for user git

Это выглядит не отличающимся от какого-либо другого подлинного запроса в журнале, таким образом, я понятия не имею, почему клон перестал работать?

Я устанавливаю тест repo на GitHub и проблематичных клонах сервера, прекрасных по SSH. Это просто имеет проблему с repos с моего офисного сервера по SSH по некоторым причинам.

Также стоит отметить, что проблематичный сервер может клонироваться по HTTP с именем пользователя и прекрасным паролем, это только по SSH, который является проблемой.

Какие-либо идеи, что проблема здесь?

PS, я - больше кодер, чем администратор сервера, я связываюсь с этим для попытки, улучшают процесс развертывания моей компании, большая часть этого плохо мне знакома

1
задан 20 January 2015 в 15:41
1 ответ

Я решил эту проблему.

Проблема заключалась в том, что открытый ключ для проблемного сервера уже был добавлен в Gitlab в качестве «ключа развертывания» для более раннего несвязанного тестирования. Затем он был удален как ключ развертывания, но по какой-то причине ключ сохранился в БД Gitlab. Затем Gitlab позволил мне повторно добавить тот же ключ для тестового пользователя, не жалуясь, что он уже существует в другом месте в БД. Но при попытке аутентификации с помощью этого ключа Gitlab будет искать ключ и получать первый «потерянный» ключ, поэтому он будет предоставлять только анонимный доступ, который, очевидно, не позволит клонировать.

Чтобы решить проблему, я нашел идентификатор потерянного ключа и удалил его с помощью git-shell:

./bin/gitlab-keys rm-key key-21

Где 21 был идентификатором потерянного ключа.

Теперь все работает, как ожидалось.

1
ответ дан 4 December 2019 в 00:13

Теги

Похожие вопросы