não é possível conectar via SSH a um banco de dados Postgresql remoto

não é possível conectar via SSH a um banco de dados Postgresql remoto

Estou tentando conectar via GUI pgAdmin3 a um banco de dados Postgresql em um servidor remoto myHost na porta 5432.

Lado do servidor:

  • Eu tenho um myUser Unix que corresponde a uma função postgresql.
  • pg_hba.conf é:
    local todos todos confiáveis
    ​​host todos todos 127.0.0.1/32 confiança

Lado do cliente:

  • Eu abro um túnel ssh: ssh -L 3333:myHost:5432 myUser@myHost
  • Eu me conecto ao servidor via pgAdmin3 (ou via psql -h localhost -p 3333 ).

Eu recebi a seguinte mensagem de erro :
o servidor fechou a conexão inesperadamente Isso provavelmente significa que o servidor foi encerrado de forma anormal antes ou durante o processamento da solicitação.

Tentei acessar um banco de dados específico com a função de superusuário usando psql -h localhost -p 3333 --dbname=myDB --user=mySuperUser sem mais sucesso.

O que esqueci na configuração?
Obrigado

Responder1

Verifique se o host remoto permite tunelamento. Você pode verificar com o cliente se o túnel foi recusado com:

ssh -v -L 3333:myHost:5432 myUser@myHost

Responder2

No meu caso, o problema era que o túnel terminava em um endereço IPv6:

ssh -L 5434:localhost:5432 user@server

Foi o suficiente para substituir localhost pelo endereço que eu presumi ser usado anteriormente:

ssh -L 5434:127.0.0.1:5432 user@server

15 minutos da minha vida pelo ralo. :) Espero que isso poupe o tempo de outra pessoa ...

Responder3

Se alguém ainda estiver procurando por solução:

Tente configurar em /etc/ssh/sshd_config:

AllowTcpForwarding yes
GatewayPorts yes

então:

service sshd restart

Responder4

Certifique-se de não estar realmente se conectando a uma instância local do Postgres escutando na mesma porta que você selecionou para a extremidade local do túnel.

Se a porta local estiver em uso, sshimprimirá uma mensagem de erro e ignorará a configuração do túnel. Mas ele ainda se conectará ao servidor remoto, o que pode fazer com que o erro saia da tela. Como você consegue se conectar, você não suspeita que algo esteja errado com o túnel até que, como último recurso, interrompa completamente o Postgres remoto e descubra que você podeaindaconectar.

Não me pergunte como eu sei disso.

informação relacionada