no se puede conectar vía SSH a una base de datos Postgresql remota

no se puede conectar vía SSH a una base de datos Postgresql remota

Estoy intentando conectarme a través de la GUI pgAdmin3 a una base de datos Postgresql en un servidor remoto myHost en el puerto 5432.

Lado del servidor :

  • Tengo un myUser de Unix que coincide con una función de postgresql.
  • pg_hba.conf es:
    local todos todos confían
    host todos todos 127.0.0.1/32 confianza

Lado del cliente :

  • Abro un túnel ssh: ssh -L 3333:myHost:5432 myUser@myHost
  • Me conecto al servidor a través de pgAdmin3 (o mediante psql -h localhost -p 3333).

Recibo el siguiente mensaje de error:
El servidor cerró la conexión inesperadamente. Esto probablemente significa que el servidor finalizó de manera anormal antes o durante el procesamiento de la solicitud.

Intenté acceder a una base de datos específica con el rol de superusuario usando psql -h localhost -p 3333 --dbname=myDB --user=mySuperUser sin más éxito.

¿Qué olvidé en la configuración?
Gracias

Respuesta1

Compruebe si el host remoto permite la creación de túneles. Podrás consultar con el cliente si el túnel es rechazado con:

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

Respuesta2

En mi caso el problema era que el túnel terminaba en una dirección IPv6:

ssh -L 5434:localhost:5432 user@server

Fue suficiente reemplazar localhost con la dirección que supuse que se usó anteriormente:

ssh -L 5434:127.0.0.1:5432 user@server

15 minutos de mi vida por el desagüe. :) Espero que esto le ahorre tiempo a alguien más...

Respuesta3

Si alguien todavía está buscando una solución:

Intente configurar en /etc/ssh/sshd_config:

AllowTcpForwarding yes
GatewayPorts yes

entonces:

service sshd restart

Respuesta4

Asegúrese de no estar conectándose a una instancia local de Postgres escuchando en el mismo puerto que el que seleccionó para el extremo local del túnel.

Si el puerto local está en uso, sshimprimirá un mensaje de error y omitirá la configuración del túnel. Pero aún así se conectará al servidor remoto, lo que puede hacer que el error desaparezca de la pantalla. Como puede conectarse, no sospecha que hay algún problema con el túnel hasta que, como último recurso, detenga el Postgres remoto por completo y descubra que puedeaúnconectar.

No me preguntes cómo sé esto.

información relacionada