Você precisa de acesso a uma interface web, um banco de dados PostgreSQL ou um serviço de administração que só escute na porta 8080. 127.0.0.1Abrir a porta no firewall do servidor seria rápido, mas esse serviço ficaria acessível a partir de uma rede onde não deveria estar.
UM Túnel SSH Isso leva a conexão para sua sessão SSH. Para acesso ocasional, prefiro este método: o serviço permanece fechado publicamente e somente a máquina que abre o túnel pode usá-lo. No entanto, você deve escolher o redirecionamento correto e verificar o endereço de escuta, especialmente com -R.

Encaminhe uma porta para sua máquina usando -L
Redirecionamento local -EU Abre uma porta em sua máquina e, em seguida, encaminha as conexões para um destino acessível a partir do servidor SSH. Sua forma geral é a seguinte:
ssh -L endereço_local:porta_local:host_destino:porta_destino usuário@servidor_ssh
Para acessar uma interface HTTP que escuta apenas na porta 80 do servidor remoto:
ssh -N -T -o ExitOnForwardFailure=yes
-L 127.0.0.1:8080:127.0.0.1:80
[email protected]
-EUcria o redirecionamento local;127.0.0.1:8080é a porta aberta no seu computador;127.0.0.1:80é o destino conforme visto pelo servidor SSH;-Nevita o envio de um comando remoto;-Tevita a alocação de um terminal;SaídaEmCasoFalhaNoEncaminhamento=simA sessão será encerrada se o SSH não conseguir criar o redirecionamento solicitado.
Esta última opção confirma a criação da porta de escuta. Não comprova que o serviço final esteja respondendo. Sempre teste o destino após abrir o túnel.
Enquanto o pedido permanecer em aberto, você poderá testar o serviço a partir do seu computador:
curl http://127.0.0.1:8080/
O endereço localizado à direita de -EU Merece sua atenção. No exemplo anterior, 127.0.0.1 Isso se refere ao servidor SSH, não ao seu computador. Se o destino estiver em outra máquina na rede privada, especifique o endereço privado dela:
ssh -N -T -o ExitOnForwardFailure=yes
-L 127.0.0.1:15432:10.20.0.15:5432
[email protected]
Seu cliente PostgreSQL então se conecta a 127.0.0.1:15432O bastião abre a conexão real com 10.20.0.15:5432A base não precisa estar conectada à internet.
Verifique se o túnel está realmente escutando.
No seu computador, controle a porta local com ss :
ss -ltnp | grep ':8080'
ss -ltnp | grep ':15432'
Você precisa assistir a uma sessão de escuta sobre 127.0.0.1associado ao processo sshSe você ver 0.0.0.0 Ou A porta pode estar acessível a partir de outras interfaces na máquina. Feche o túnel e recrie-o, especificando-o explicitamente. 127.0.0.1.
O guia para Abrir portas no Linux com ss Detalha a leitura dos endereços de escuta. Verifique também se o servidor SSH consegue alcançar o destino final:
curl -I http://127.0.0.1:80/
nc -vz 10.20.0.15 5432
Se o túnel for criado, mas isso enrolar ou seu cliente SQL recebe Ligação recusadaProvavelmente o SSH está funcionando. O problema está no destino final, que não está escutando no endereço ou porta especificados.
Usar -R sem publicar um serviço por engano
Redirecionamento remoto -R Faz o inverso. Abre uma porta no servidor SSH e a encaminha para um serviço acessível a partir da sua máquina. Exemplo: tornar uma aplicação local na porta 3000 acessível apenas a partir do servidor remoto:
ssh -N -T -o ExitOnForwardFailure=yes
-R 127.0.0.1:9000:127.0.0.1:3000
[email protected]
No servidor remoto, um processo local agora pode chamar:
curl http://127.0.0.1:9000/
Por padrão, sshd Vincula esta porta remota à interface de loopback. Não substitua. 127.0.0.1 por 0.0.0.0 Ou * sem ter decidido quem deveria poder participar do serviço. O parâmetro do servidor Portas de gateway Isso permite a escuta em outras interfaces. Uma simples demonstração local pode então se tornar um serviço exposto à rede.
Evite também a opção -g com um redirecionamento local se você não quiser que outras máquinas se conectem à porta encaminhada. Para minimizar o uso de recursos, vincule seus túneis a 127.0.0.1 em ambos os lados.
Controle as restrições do servidor SSH
Se o SSH responder proibido administrativamente Caso o redirecionamento seja recusado, consulte a configuração atual do servidor:
sudo /usr/sbin/sshd -T | grep -E '^(allowtcpforwarding|gatewayports|permitopen|permitlisten)'
Permitir encaminhamento TCP Pode permitir redirecionamentos locais, redirecionamentos remotos, ambos ou nenhum. Permitir abrir E Permitir ouvir Essas restrições são usadas para limitar os destinos e portas permitidos. Em um servidor compartilhado, essas restrições são preferíveis a conceder autorização global a todas as contas.
Antes de qualquer modificação /etc/ssh/sshd_config ou um arquivo em /etc/ssh/sshd_config.d/Mantenha sua sessão atual aberta e teste a sintaxe:
sudo /usr/sbin/sshd -t
Reinicie o SSH somente após um retorno bem-sucedido, sem erros. O procedimento completo é explicado no artigo sobre Reiniciando o serviço SSH no UbuntuSe você ainda estiver usando uma senha para esta conta, comece por Configure uma chave SSH..
Salve um túnel recorrente em ~/.ssh/config
Para um banco de dados usado regularmente, evite copiar comandos longos. Adicione um host dedicado em ~/.ssh/config :
Host túnel-db
Nome do host: bastion.example.net
Administrador de usuário
LocalForward 127.0.0.1:15432 10.20.0.15:5432
SaídaEmFalhaDeEncaminhamento sim
ServerAliveInterval 30
ServerAliveCountMax 3
Proteja o arquivo e, em seguida, abra o túnel para o primeiro plano:
chmod 600 ~/.ssh/config
ssh -N -T túnel-db
Recomendo manter a primeira execução em primeiro plano. Você verá imediatamente quaisquer erros de chave, porta local ou redirecionamento, e Ctrl + C Feche o túnel corretamente. Se você então o iniciar em segundo plano com -fIdentifique o processo correto antes de interrompê-lo:
pgrep -af 'ssh.*15432'
matar PID
Evitar matar -9 Por reflexo. Um sinal normal geralmente é suficiente para encerrar a sessão e liberar a porta.
Diagnóstico de um túnel que não passa
- Endereço já em uso Outro processo é usar a porta local. Verifique com
ss -ltnpou escolha outra porta. - Ligação recusada O serviço de destino não está em execução ou o endereço de destino está incorreto do ponto de vista do servidor SSH.
- Administrativamente proibido A configuração SSH bloqueia o redirecionamento ou limita o destino solicitado.
- Tempo esgotado O servidor SSH não consegue alcançar o destino devido a restrições de roteamento ou a um firewall intermediário.
- Túnel caindo Verifique a estabilidade da conexão e utilize
Intervalo de atividade do servidorem vez de um loop que reinicia o SSH sem qualquer diagnóstico.
Para obter detalhes da negociação e redirecionamentos, adicione temporariamente -v :
ssh -v -N -T -L 127.0.0.1:8080:127.0.0.1:80 [email protected]
Um túnel SSH protege o tráfego, mas não corrige os direitos de acesso do serviço de destino. Mantenha a escuta na porta de loopback local, utilize uma conta SSH com privilégios limitados, controle as chaves autorizadas e encerre a sessão assim que o acesso não for mais necessário.
As sintaxes de -EU, -R, -N E -g estão detalhados no Documentação oficial do cliente OpenSSHOs controles Permitir encaminhamento TCP, Portas de gateway, Permitir abrir E Permitir ouvir são descritos em sshd_config(5).