Q - Quiero construir un servidor Git en GCP con la capa gratuita - Edición de proxy SSH con Nginx -
Hola, soy un inútil.
Esta es la secuela de 'Ha'.
Así como está, no puedo hacer push con SSH
La estructura actual
Lado del cliente - VPS VPN srv + Nginx proxy srv - GCP Gitea
Quiero pasar SSH a través del VPS hacia GCP de esta manera.
Bueno, estaba pensando qué hacer, pero lo resolví.
Recordé el proxy stream que intenté usar en el pasado cuando quise hacer un proxy de correo con Nginx.
En resumen, es posible hacer un proxy fácilmente para protocolos distintos de HTTP/HTTPS.
Sin embargo, en este caso, no se puede hacer proxy para dominios, ya que es una interacción de IP y puerto.
Dicho esto, es más rápido si primero ven la sintaxis.
stream {
server {
listen 2222;
proxy_pass 10.1.0.6:2222;
proxy_timeout 1m;
proxy_connect_timeout 1s;
}
}
Este servidor escuchará y aceptará en el puerto 2222, y hará proxy al puerto 2222 de la dirección IP 10.1.0.6.
La razón por la que no se puede hacer por dominio es más detallada en este Issue, así que si les interesa, échenle un vistazo.
Y, por ejemplo, ¿qué pasaría si hiciera proxy al puerto 22?
stream {
server {
listen 22;
proxy_pass 10.1.0.6:2222;
}
}
Así es, si intentas hacer SSH al puerto 22 de este servidor, todo intentará hacer SSH a 10.1.0.6:2222.
Si este servidor en funcionamiento tiene configurado el puerto 22 estándar, la conexión SSH se volvería prácticamente imposible, lo cual no es bueno.
Si eso sucediera, ¿habría alguna solución? Dejando eso de lado...
Entonces, dado que necesito poder escuchar en el puerto 2222, este servidor, que es FreeBSD, abre temporalmente el puerto 2222 con pf.
pass in on wg0 proto tcp from 10.1.0.6 to any port 2222
Con esto, si la dirección IP 10.1.0.6 no es visible para un atacante, esta ruta no se aplicará, por lo que no se podrá llegar a este puerto 2222 a menos que WireGuard sea hackeado.
Aplicar configuración
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
doas service nginx restart
Entonces, también en el lado de Gitea
Por defecto, Gitea usa el puerto SSH estándar, el 22, así que tal como está, no funcionará.
Por lo tanto, editaremos el archivo de configuración 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
Con esto, el puerto 2222 se usará por defecto.
Reiniciar con lo siguiente
sudo service gitea restart
sudo service gitea status
Hacer el firewall en GCP muy estricto
Como era molesto, lo cerré casi por completo.

Probar si se puede hacer git push con Gitea
Primero, haré 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.
¡Funcionó!
Y luego, intentaré crear un repositorio en Gitea.

Y luego, 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'.
¡¡¡¡¡¡Síííííííííííí!!!!!!
Conclusión
Si alguien quiere una cuenta, por favor contácteme y la crearé.
Fin.