Q - Хочу создать Git-сервер на бесплатном уровне GCP - Часть прокси SSH с Nginx -
Привет, я неумеха.
Это продолжение "Ха".
Невозможно выполнить Push по SSH в текущем состоянии
Текущая схема
Сторона клиента - VPS VPN srv + Nginx proxy srv - GCP Gitea
Я хочу, чтобы SSH проходил через VPS к GCP таким образом.
Ну, я думал, что делать, но я решил это.
Я вспомнил прокси stream, который я пытался использовать, когда в прошлом пытался настроить почтовый прокси с Nginx.
По сути, можно легко проксировать протоколы, отличные от HTTP/HTTPS.
Однако в этом случае это образ взаимодействия IP и порта, поэтому проксирование для доменов невозможно.
Тем не менее, будет быстрее, если вы сначала посмотрите на синтаксис.
stream {
server {
listen 2222;
proxy_pass 10.1.0.6:2222;
proxy_timeout 1m;
proxy_connect_timeout 1s;
}
}
Этот сервер будет слушать на порту 2222 и принимать соединения, а затем проксировать их на порт 2222 IP-адреса 10.1.0.6.
Причина, по которой это невозможно сделать на уровне домена, более подробно объяснена в этом Issues, так что, если вам интересно, посмотрите.
И что произойдет, если, например, проксировать порт 22?
stream {
server {
listen 22;
proxy_pass 10.1.0.6:2222;
}
}
Да, если вы попытаетесь подключиться по SSH к этому серверу на порту 22, все попытки SSH будут направлены на 10.1.0.6:2222.
Если этот работающий сервер настроен на стандартный порт 22, то SSH-соединение фактически станет невозможным, что нехорошо.
Если это произойдет, есть ли какой-нибудь обходной путь? Но давайте пока оставим это в стороне...
Итак, мне нужно включить прослушивание на порту 2222, поэтому этот сервер на FreeBSD временно открывает порт 2222 с помощью pf.
pass in on wg0 proto tcp from 10.1.0.6 to any port 2222
Таким образом, если IP-адрес 10.1.0.6 не виден злоумышленнику, эта маршрутизация не будет применена, и до порта 2222 не доберутся, если только WireGuard не будет взломан.
Применение настроек
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
doas service nginx restart
Тогда и на стороне Gitea
По умолчанию Gitea использует стандартный SSH-порт 22, поэтому в текущем виде это не сработает.
Поэтому отредактируйте файл конфигурации app.ini.
[server]
SSH_DOMAIN = git.mydomain.jp
DOMAIN = git.mydomain.jp
HTTP_PORT = 3000
ROOT_URL = https://git.mydomain.jp/
APP_DATA_PATH = /var/lib/gitea/data
DISABLE_SSH = false
SSH_PORT = 2222
Теперь он будет использовать порт 2222 по умолчанию.
Перезапустите с помощью следующего
sudo service gitea restart
sudo service gitea status
Сделать брандмауэр в GCP очень узким
Это было раздражающе, поэтому я почти все закрыл.

Проверка возможности git push с Gitea
Сначала выполните ssh -T.
$ ssh -T -p 2222 git@git.mydomain.jp
Hi there, haturatu! You've successfully authenticated with the key named x1@artix, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.
Получилось.
Затем попробую создать репозиторий в Gitea.

И затем git push
$ git push -u origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 1.30 KiB | 1.30 MiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To ssh://git.mydomain.jp:2222/haturatu/wg-genconf.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
Ура!!!!
В заключение
Если кто-то хочет аккаунт, пожалуйста, свяжитесь со мной, и я создам его для вас.
Конец.