SSH를 통해 원격 Postgresql 데이터베이스에 연결할 수 없습니다

SSH를 통해 원격 Postgresql 데이터베이스에 연결할 수 없습니다

pgAdmin3 GUI를 통해 포트 5432의 원격 서버 myHost에 있는 Postgresql 데이터베이스에 연결하려고 합니다.

서버 측 :

  • postgresql 역할과 일치하는 Unix myUser가 있습니다.
  • pg_hba.conf는 다음과 같습니다:
    로컬 모두 모두 신뢰
    호스트 모두 모두 127.0.0.1/32 신뢰

고객 입장에서 :

  • SSH 터널을 엽니다: ssh -L 3333:myHost:5432 myUser@myHost
  • pgAdmin3 (또는 psql -h localhost -p 3333)을 통해 서버에 연결합니다.

다음과 같은 오류 메시지가 나타납니다.
서버가 예기치 않게 연결을 닫았습니다. 이는 요청을 처리하기 전이나 처리하는 동안 서버가 비정상적으로 종료되었음을 의미할 수 있습니다.

psql -h localhost -p 3333 --dbname=myDB --user=mySuperUser를 사용하여 수퍼유저 역할로 특정 데이터베이스에 액세스하려고 시도했지만 더 이상 성공하지 못했습니다.

설정에서 무엇을 잊어버렸습니까?
감사합니다

답변1

원격 호스트가 터널링을 허용하는지 확인하세요. 다음을 통해 터널이 거부되었는지 클라이언트에 확인할 수 있습니다.

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

답변2

제 경우에는 터널이 IPv6 주소로 끝났다는 것이 문제였습니다.

ssh -L 5434:localhost:5432 user@server

localhost를 이전에 사용되었다고 가정했던 주소로 바꾸는 것으로 충분했습니다.

ssh -L 5434:127.0.0.1:5432 user@server

내 인생의 15분은 하수구로 흘러갔습니다. :) 이것이 다른 사람의 시간을 절약해주기를 바랍니다...

답변3

누군가 여전히 해결책을 찾고 있는 경우:

/etc/ssh/sshd_config에서 설정해 보십시오:

AllowTcpForwarding yes
GatewayPorts yes

그 다음에:

service sshd restart

답변4

터널의 로컬 끝을 위해 선택한 포트와 동일한 포트에서 수신 대기하는 Postgres의 로컬 인스턴스에 실제로 연결하고 있지 않은지 확인하세요.

로컬 포트가 사용 중이면 ssh오류 메시지를 인쇄하고 터널 설정을 건너뜁니다. 하지만 여전히 원격 서버에 연결되므로 오류가 화면 밖으로 스크롤될 수 있습니다. 연결할 수 있으므로 최후의 수단으로 원격 Postgres를 완전히 중지하고 연결할 수 있다는 것을 알아내기 전까지는 터널에 문제가 있다고 의심하지 않습니다.아직연결하다.

내가 이것을 어떻게 아는지 나에게 묻지 마세요.

관련 정보