Q - 我想在GCP免费层搭建Git服务器 - Nginx SSH代理篇 -
大家好,我是无能。
这是《破》的续篇。
这样无法通过SSH进行Push
目前的架构是:
客户端 - VPS VPN srv + Nginx proxy srv - 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.6的2222端口。
关于无法按域名进行代理的原因,此Issue有更详细的说明,感兴趣的朋友可以查看。
那么,如果我们将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
这样,Gitea将默认使用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'.
太棒了!!!!!!
结语
如果有人想要账号,请联系我,我会为您创建。
结束。