Os servidores HTTP, como o nginx, podem fazer proxy com base no nome do host, porque ele é enviado no cabeçalho do host HTTP / 1.1 da solicitação. O SSH não tem esse conceito de hosts virtuais, o cliente não envia o nome do host.
Você tem três opções:
- Use o encaminhamento de porta para disponibilizar seu servidor gitlab diretamente.
- Disponibilize seu servidor gitlab por meio de um endereço IPv4 ou IPv6 (adicional).
- Crie um túnel SSH em sua rede e faça proxy da conexão SSH ao seu servidor git por meio desse túnel.
Encaminhamento de porta
Esta é provavelmente a abordagem mais fácil que interfere no "servidor público". Configure seu gateway para encaminhar a porta 2222 para 192.168.2.26:22. Em seguida, use o ssh -p2222 [email protected]
para se conectar. Para git
, use URLs como ssh://[email protected]:2222/repo.git
.
Como alternativa, você pode usar apenas ssh://[email protected]/repo.git
ou [email protected]:repo.git
se criar um arquivo ~/.ssh/config
com:
Host git.example.com
Port 2222
Endereço IPv4 ou IPv6 adicional
Se você tem uma rede doméstica, provavelmente é impossível obter um endereço IPv4, mas alguns provedores de negócios fazem isso. Se a sua rede suporta IPv6 (end-to-end), então você pode apenas usar o roteamento normal sem proxy desagradável ou hackeria NAT.
túnel SSH
Você pode usar a opção ProxyCommand
para especificar o comando que faz o proxy da conexão SSH para git.example.com
. No seu caso, o "servidor público" é o proxy, então o comando deve estar se conectando a esse servidor.
Vamos começar com o snippet de configuração para ~/.ssh/config
:
Host git.example.com
ProxyCommand ssh -W %h:%p [email protected]
Neste snippet, a opção -W %h:%p
será expandida para -W git.example.com:22
e redirecionará a entrada e a saída padrão para o host (git.example.com). Isso permite que seu cliente SSH local fale com seu servidor gitlab. Você pode usar novamente qualquer URL como [email protected]:repo.git
, o proxy será transparente para o cliente git.