Interagindo com o PostgreSQL no servidor remoto através do túnel SSH?

2

Eu tenho a configuração do Usuário A no meu servidor da Web com sua chave pública de SSH copiada para o ~/.ssh/authorized_keys do Usuário B no meu servidor de banco de dados. A idéia é usar um túnel SSH para facilitar a comunicação entre meu aplicativo da web e o banco de dados remoto. Estou usando ufw para bloquear tudo, exceto as conexões ssh e a porta 5432 que o PostgreSQL usa para conexões locais:

ufw default deny
ufw allow ssh/tcp
ufw allow 5432/tcp
ufw enable

Aqui está o comando que eu uso para abrir o túnel SSH (via servidor web):

ssh -L 63333:localhost:5432 [email protected]

A execução de netstat -lpnt | grep 63333 | grep ssh após o comando acima no meu servidor web gera o seguinte:

tcp      0     0 127.0.0.1:63333       0.0.0.0:*       LISTEN      22560/ssh
tcp6     0     0 ::1:63333             :::*            LISTEN      22560/ssh

Em seguida, tento conectar-me ao servidor de banco de dados na porta 63333 para verificar se tudo está funcionando:

psql -h localhost -p 63333 userb

Recebi a seguinte mensagem de erro:

  

-bash: / usr / bin / psql: Nenhum desses arquivos ou diretório

Existe algo óbvio que estou sentindo falta aqui? Eu só tenho o PostgreSQL instalado no servidor de banco de dados. Pelo que entendi, uma vez que o túnel está no lugar, e dado os parâmetros certos, não deveria ter acesso ao terminal interativo (psql)?

    
por Cyle 18.12.2013 / 20:13

1 resposta

2

Doh! Meu túnel SSH estava se conectando bem. Você precisa ter um cliente instalado no servidor que está estabelecendo a conexão remota para se comunicar com o PostgreSQL.

No meu caso, era um liner no meu servidor:

sudo apt-get install postgresql-client-9.3
    
por Cyle 18.12.2013 / 21:49