Conéctate a PostgreSQL remotamente por un SSH Tunnel. Debido a las normas PCI DSS no es permitido conectar directamente a PostgreSQL por razones de seguridad.
Pero esto no te impide conectarte remotamente a PostgreSQL en forma segura.
Para ello lo que debes hacer es conectarte por un túnel SSH y desde ahí a PostgreSQL como si se tratara de una conexión local usando a localhost como host/servidor de la base de datos.
Por pasos:
1. En cPanel crea una nueva SSH Key y autorízala, esta será usada para conectar al servidor por SSH, para generar y autorizar la SSH key te puedes apoyar de este tutorial de SFTP
2. En el cliente que usas para conectar a la base de datos le vas a indicar que use un túnel SSH y para los datos de conexión a PostgreSQL use localhost como host/servidor, el usuario, contraseña, nombre de base de datos que has creado en cPanel -> Bases de datos PostgreSQL.
3. Para pgAdmin
En Name, ingresa algo como: server3.hostingfacil.co
En la pestaña de conexión, Host: localhost, port el que está por defecto, base de datos y usuario la que creaste en cPanel. Y activas Save Password.
En la pestaña de SSH Tunnel, actívalo, en Host: server3.hostingfacil.co, username, el usuario de cPanel, activas Identity file, en Identity file seleccionas la Private SSK Key que creaste. En Password, la contraseña de la SSH Key que definiste al crear la SSH Key en cPanel.
Configura el path donde tienes instalado Postgres, por ejemplo, si es la versión 9.6, sería este:
C:\Program Files\PostgreSQL\9.6\bin
Esto lo haces en File (Archivo) -> Preferences (Preferencias) -> Path (Ruta) -> Binary Paths (Rutas de binarios), en ambos lo configuras igual.
En este punto ya podrás usar la función de exportar (de tu localhost, por ejemplo) e importar (Al hosting, por ejemplo)
- En caso tengas inconvenientes intentando conectar prueba lo siguiente:
- Usando la SSH Key que generaste en el paso #1 conecta via SFTP usando por ejemplo Filezilla guiándote con el mismo tutorial, si la conexión no es exitosa, verifica que el usuario, servidor/hostname, SSH Key y puerto esté correcto. Si conecta, indica que los datos de conexión SSH están correctos.
- Conecta a PostgreSQL desde cPanel -> Terminal, por ejemplo, escribe
psql -h localhost -U USUARIO -d DATABASE
Al presionar Enter, digita ó pega con click derecho -> pegar la contraseña, esta no se verá en pantalla, y luego presiona enter
USUARIO lo reemplazas por el usuario que creaste en cPanel -> Base de datos PostgreSQL
DATABASE por la base de datos que creaste en cPanel -> Base de datos PostgreSQL
la contraseña es la que le asignaste al usuario PostgreSQL al crearlo en cPanel -> Base de datos PostgreSQL
Si te conecta (No sale error), indica que los datos de acceso a PostgreSQL están correctos.
Si habiendo verificado que los datos de acceso SSH y PostgreSQL están correctos, se trata de un error de programación, la sugerencia sería hacer debug para encontrar el texto exacto de error y así poder saber si la falla está en la creación del SSH Tunnel o también conocido como SSH Forward o en la conexión a PostgreSQL usando dicho túnel.
Con esta conexión a PostgreSQL por medio de SSH la información que viaja por Internet así la intercepten no será posible que la puedan leer/conocer, gracias al nivel de cifrado seguro y moderno que maneja SSH, que podemos decir que es el protocolo más auditado del mundo, lo que lo hace muy seguro cuando se configura correctamente sus ciphers y seguridad en general.