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, ssh
imprimirá 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.