Você está tentando se conectar ao PostgreSQL em
localhost
usando um script rodando em seu computador, mas não há nenhum servidor PostgreSQL rodando lá. Para que isso funcione, você teria que executar o ssh no servidor remoto e executar seu script Python lá, onde o servidor PostgreSQL é "local" em relação ao script Python.
(É por isso que executar o
psql
funciona - porque você o está executando no servidor remoto , onde PostgreSQL é "local" relativo a psql
). Alternativamente, você pode:
-
Use um túnel SSH para encaminhar a porta PostgreSQL do computador local para o remoto; ou
-
Conecte-se diretamente por TCP/IP ao servidor PostgreSQL remoto usando seu nome de host ou endereço IP, após habilitar conexões remotas no servidor.
Observe que apenas colocar o endereço IP do servidor ou o nome do host na string de conexão em vez de
localhost
não funcionará a menos que você também configure o servidor para aceitar conexões remotas . Você deve definir listen_addresses
para escutar conexões não locais, adicione quaisquer regras de firewall necessárias, defina pg_hba.conf
para permitir conexões de máquinas remotas e, de preferência, configurar SSL. Tudo isso é abordado no capítulo Autenticação do cliente do manual do usuário do PostgreSQL. Você provavelmente achará um túnel SSH mais simples e fácil de entender.