Q - 想在GCP免費額度內建立Git伺服器 - Nginx SSH代理篇 -

4 min

language: ja bn en es hi pt ru zh-cn zh-tw

大家好,我是無能。
這是《破》的續集。

這樣下去就無法透過SSH進行Push

目前的架構
客戶端 - VPS VPN 伺服器 + Nginx 代理伺服器 - GCP Gitea
我希望能夠像這樣,透過VPS將SSH連線導向GCP。

那麼,我一直在思考該怎麼辦,但現在已經解決了。
我回想起了過去嘗試使用Nginx進行郵件代理時,打算使用的stream代理。
總之,除了HTTP/HTTPS協定之外,也可以輕鬆地進行代理。
此外,由於這種情況是IP和埠之間的通訊,因此無法針對網域進行代理。
也就是說,最好先看看語法。

stream {
    server {
        listen 2222; 
        proxy_pass 10.1.0.6:2222; 
        proxy_timeout 1m;
        proxy_connect_timeout 1s;
    }
}

此伺服器將在2222埠上監聽並接受連線,然後代理到IP位址10.1.0.62222埠。
無法以網域為單位進行代理的原因,此Issues有更詳細的說明,有興趣的人可以看看。

那麼,如果將22埠代理了會發生什麼事呢?

stream {
    server {
        listen 22; 
        proxy_pass 10.1.0.6:2222; 
    }
}

沒錯,當您嘗試透過22埠SSH到此伺服器時,所有連線都將嘗試SSH到10.1.0.6:2222
如果此正在運行的伺服器設定了標準的22埠,那麼實際上將無法進行SSH連線,這是不行的。
如果真的發生了,實際上有沒有什麼解決辦法呢?先不談這些...

因此,必須讓2222埠能夠監聽,所以這台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上的防火牆設定得極為精細

因為很麻煩,所以幾乎都關閉了。
Image

測試是否可以在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上建立一個儲存庫。
Image
接著,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'.

太棒了!!!!!!

結語

如果有人想要帳號,請聯絡我,我可以幫忙建立。
結束。

Related Posts