Q - Quiero construir un servidor Git en GCP con la capa gratuita - Edición de proxy SSH con Nginx -

5 min

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

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.
Image

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.
Image
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.

Related Posts