Q - 無料枠のGCPでGitサーバーを建てたい - NginxでSSHプロキシ編 -
3 min read
こんにちは、無能です。
破の続編です。
このままだとSSHでPushできない
今の構図
クライアント側 - VPS VPN srv + Nginx proxy srv - GCP Gitea
こんな感じでVPSを通過してGCPに向けてSSH通したいんです。
さて、どうしようかなと思っていたのですが解決しました。
過去にNginx
でのメールプロキシをしようとしたときに使おうとしたstream
プロキシを思い出しました。
要はHTTP/HTTPS
のプロトコル以外もかんたんにプロキシすることが可能です。
なお、この場合はIPとポートとのやりとりであるイメージである為ドメインに対してはプロキシできません。
ということは、ですが一旦構文を見てもらった方が早いです。
stream {
server {
listen 2222;
proxy_pass 10.1.0.6:2222;
proxy_timeout 1m;
proxy_connect_timeout 1s;
}
}
このサーバーで2222番
でListenし受け付け、10.1.0.6
というIPアドレスの2222番
ポートへプロキシします。
ドメイン単位でできない理由はこのIssuesの方が詳しいので気になる方は見てください。
そして、例えばですが22番ポートをプロキシしてしまった場合どうなるでしょうか?
stream {
server {
listen 22;
proxy_pass 10.1.0.6:2222;
}
}
そう、このサーバーに22番でSSHをしようとしている場合に全て10.1.0.6:2222
へSSHをしにいこうとします。
この稼働しているサーバーを標準の22番ポートを設定してるなら実質SSH
接続ができなくなってしまいそうなので、それはアカンです。
なっちゃったらでなったで実際なんか回避策あるのかな?とそんなことはおいておいて・・・。
で、2222番をListenできるようにしないと行けないのでFreeBSD
であるこのサーバーはpf
で一旦2222番ポートを開放。
pass in on wg0 proto tcp from 10.1.0.6 to any port 2222
これでそもそも10.1.0.6
のIPアドレスが攻撃者が見えなければこのルーティングが適応されないので、WireGuard
上がハックされるくらいじゃないとこの2222番ポートまで辿り着きません。
設定適応
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上でのファイアーウォールを極細にする
煩わしいのでほぼ閉じました。
Giteaでgit push出来るかどうかテストする
最初に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'.
おっしゃー!!!!!!
おわりに
アカウントほしい人いれば連絡してもらえれば作るので連絡ください。
おわり。