Q - Quero construir um servidor Git no GCP com a camada gratuita - Edição de proxy SSH com Nginx -

5 min

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

Olá, sou um inútil.
É a sequência de Ha.

Não consigo fazer push via SSH assim

A estrutura atual
Lado do cliente - VPS VPN srv + Nginx proxy srv - GCP Gitea
Quero passar o SSH pelo VPS em direção ao GCP desta forma.

Bem, eu estava pensando no que fazer, mas resolvi.
Lembrei-me do proxy stream que tentei usar no passado ao tentar fazer um proxy de e-mail com Nginx.
Em suma, é possível fazer proxy facilmente para protocolos que não sejam HTTP/HTTPS.
No entanto, neste caso, como é uma interação de IP e porta, não é possível fazer proxy para um domínio.
Isso significa que é mais rápido ver a sintaxe primeiro.

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

Este servidor escuta e aceita na porta 2222 e faz proxy para a porta 2222 do endereço IP 10.1.0.6.
A razão pela qual não pode ser feito por domínio é explicada em mais detalhes nesta Issue, então, se estiver interessado, dê uma olhada.

E, por exemplo, o que aconteceria se a porta 22 fosse proxy?

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

Sim, se você tentar fazer SSH para este servidor na porta 22, ele tentará fazer SSH para 10.1.0.6:2222.
Se este servidor em execução estiver configurado para a porta SSH padrão 22, a conexão SSH pode se tornar impossível, o que não é bom.
Deixando de lado se há alguma solução alternativa se isso acontecer...

Então, como a porta 2222 precisa ser capaz de escutar, este servidor FreeBSD abre temporariamente a porta 2222 com pf.

pass in on wg0 proto tcp from 10.1.0.6 to any port 2222

Com isso, se o endereço IP 10.1.0.6 não for visível para um atacante, este roteamento não será aplicado, então a porta 2222 não será alcançada a menos que o WireGuard seja hackeado.
Aplicação da configuração

doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
doas service nginx restart

Então, o lado do Gitea também

Por padrão, o Gitea usa a porta SSH padrão 22, então isso não funcionará assim.
Portanto, edite o arquivo de configuração 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

Com isso, a porta 2222 será usada por padrão.
Reiniciar com o seguinte

sudo service gitea restart
sudo service gitea status

Tornar o firewall no GCP extremamente restrito

É irritante, então eu o fechei quase completamente.
Image

Testar se é possível fazer git push com Gitea

Primeiro, execute 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.

Funcionou.

E então, vou tentar criar um repositório no Gitea.
Image
E então, 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'.

Uhuuuu!!!!!!

Conclusão

Se alguém quiser uma conta, entre em contato e eu a criarei.
Fim.

Related Posts