Я пытаюсь подключиться через графический интерфейс pgAdmin3 к базе данных Postgresql на удаленном сервере myHost через порт 5432.
Серверная сторона:
- У меня есть Unix myUser, который соответствует роли postgresql.
- 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 и не выясните, что вы можетевсе ещесоединять.
Не спрашивайте меня, откуда я это знаю.