Как открыть 22 порт для локального Gitlab Server через роутер?
Здравствуйте.
Установил gitlab server на виртуалбокс, после успешной установки указал external ip=192.168.0.26:8086
На другом сервере который выступает балансировщиком в настройках nginx указал proxy forward на локальный айпи гитлаба.
Далее на хосте(ноутбук с которого работаю) сгенерил ssh ключ и вставил его в настройках гитлаба через его интрфейс.
После этого создал репозиторий и пытаюсь запушить туда код по ssh, но выходит такая ошибка:
PS C:\Users\byzantium\Desktop\Project> git push -u origin main
kex_exchange_identification: Connection closed by remote host
Connection closed by "белый_айпи" port 22
fatal: Could not read from remote repository.
Пробовал указать в роутере 22 порт для сервера, который выступает балансировщиком на 2222 порту
В настройка nginxa дополнительно задал параметры для 2222 порта и порт-форвард на 192.168.0.26:22
Результат такой:
root@ubuntu:~# ssh -p 2222 git@domen.ru
ssh: connect to host domen.ru port 2222: Connection refused
Если если пушить по https то отрабатывает без ошибок, правда каждый раз просит ввести логин и пароль.
Включить и настроить встроенный гитлабовский SSH сервер (чтобы отделить его от стандартного SSH сервера)
На вашем прокси сервере стандартный SSH перенести на любой другой порт
Использовать стандартный SSH тунель на прокси сервере для проброса SSH сервера гитлаба с его сервера на локальный стандартный SSH порт (чтобы порт не указывать при работе гита через SSH)
Нет, неправильно. nginx - это веб сервер, а не SSH сервер и к SSH тунелю он не имеет никакого отношения. В данном конфиге в проксируете HTTP протокол на порт SSH протокола. Читайте ман по SSH тунелям: https://habr.com/ru/companies/flant/articles/691388/
Для запуска и постоянной работы тунеля рекомендую использовать AutoSSH.
Зачем пароль? Настройте нормальную авторизацию по ключу. Не используйте учетную запись рут сервера, а создайте отдельного пользователя и под ним авторизуйтесь. Настройки тунеля укажите в конфиграции ssh: так удобнее - можно просто указать название тунеля. Для AutoSSH сделайте systemd конфиг для автостарта. ~/.ssh/config
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-113-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Thu Jul 4 07:05:00 AM UTC 2024
System load: 0.13 Processes: 252
Usage of /: 32.3% of 33.20GB Users logged in: 1
Memory usage: 83% IPv4 address for enp0s3: 192.168.0.26
Swap usage: 1%
* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
just raised the bar for easy, resilient and secure K8s cluster deployment.
https://ubuntu.com/engage/secure-kubernetes-at-the-edge
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
Last login: Thu Jul 4 06:31:36 2024 from 192.168.0.19
gitlab@gitlab-server:~$
Euxinus, в процессе появился такой вопрос, а как это исправит ситуацию с выгрузкой кода по ssh? Балансировщик нужен был, как я думал, для того чтобы открыть доступ в интернет, но это как оказалось так не работает
Гитлаб сервер настроен на локальный external url чтобы не открывать для него порт в роутере, чтобы не возникло конфликта с другим сервером для которого этот порт уже в роутере открыт. Роутер один и он не может балансировать между одинаковыми портами
такой способ работает:
git remote add origin git@192.168.0.26:Username/project.git
О, а про ограничения на биндинг портов ниже 1000 я как-то и забыл. Тогда тут два варианта: снимать ограничение по порту или запускать туннель от рута.
Балансировщик нужен был, как я думал, для того чтобы открыть доступ в интернет, но это как оказалось так не работает
Роутер один и он не может балансировать между одинаковыми портами
Ну, исходя из вашего описания, как я понял у вас прокси смотрит в интернет/вашу сеть, а сервер с гитлабом находится за ним. Прокси сервер же у вас уже есть - вот в нем nginx пусть и разруливает запрсоы на разные сайта на разные сервера.
VoidVolker, да, прокси сервер так и делает, он проксирует на локальный гитлаб при запросе доменного имени в браузере по https, но как пушить по ssh из другой cети если nginx не умеет проксировать ssh?
Так ведь я же ведь уже написал - проксировать через SSH тунель, который и проксирует запросы с 22 порта прокси-сервера на порт gitlab ssh на сервере гитлаба.