Я пытаюсь подключиться через графический интерфейс pgAdmin3 к базе данных Postgresql на удаленном сервере myHost на порту 5432.
На стороне сервера:
Сторона клиента :
Я получаю следующее сообщение об ошибке:
сервер неожиданно закрыл соединение. Это, вероятно, означает, что сервер аварийно завершил работу до или во время обработки запроса.
Я попытался получить доступ к конкретной базе данных с ролью суперпользователя, используя psql -h localhost -p 3333 --dbname = myDB --user = mySuperUser, но безуспешно.
Что я забыл в настройке?
Спасибо
В моем случае проблема заключалась в том, что туннель заканчивался адресом IPv6:
ssh -L 5434:localhost:5432 user@server
Достаточно было заменить localhost на адрес, который, как я предполагал, использовался ранее:
ssh -L 5434:127.0.0.1:5432 user@server
15 минут моей жизни на ветер. :) Надеюсь, это сэкономит чужое время ...
Проверьте, разрешает ли удаленный хост туннелирование. Вы можете проверить с клиентом, отклонен ли туннель, с помощью:
ssh -v -L 3333:myHost:5432 myUser@myHost
Похоже, вам нужно добавить разрешения для вашего пользователя для доступа к postgresql нелокально.
Я знаю, что создается впечатление, что, создавая туннель, вы подключаетесь локально, но вы, вероятно, не получаете к нему доступ через loopback / localhost.
Вероятно, вам нужно добавить строку в pg_hba.cong, я бы привел пример, но я на своем телефоне, извините
Если кто-то все еще ищет решение:
Попробуйте установить в / etc / ssh / sshd_config:
AllowTcpForwarding yes
GatewayPorts yes
затем:
service sshd restart
Убедитесь, что вы на самом деле не подключаетесь к локальному экземпляру Postgres, который прослушивает тот же порт, что и тот, который вы выбрали для локального конца туннеля.
Если локальный порт используется, ssh
напечатает сообщение об ошибке и пропустит настройку туннеля. Но он все равно будет подключаться к удаленному серверу, что может привести к тому, что сообщение об ошибке исчезнет с экрана. Поскольку вы можете подключиться, вы не подозреваете, что с туннелем что-то не так, пока вы, в качестве последнего средства, полностью не остановите удаленный Postgres и не обнаружите, что вы можете по-прежнему подключиться.
Не спрашивайте, откуда я это знаю.