Подтвердить что ты не робот

PostgreSQL через SSH-туннель

Я хотел бы использовать RazorSQL для подключения к моей базе данных, которая работает на удаленном сервере. Я создаю туннель SSH на своем локальном хосте с помощью следующей команды:

ssh -L 1111:remote.server.com:5432 [email protected]

Я настраиваю свое соединение через графический интерфейс RazorSQL, указывая localhost как хост и 1111 как порт. Когда я нажимаю "Подключиться", появляется следующее сообщение об ошибке:

ERROR: An error occurred while trying to make a connection to
the database: 

JDBC URL: jdbc:postgresql://localhost:1111/myuser

FATAL:
no pg_hba.conf entry for host "aaa.bbb.ccc.ddd",
user "myuser", database "mydatabase", SSL off

где aaa.bbb.ccc.ddd - IP-адрес удаленного сервера.

Более того, мне не разрешено изменять содержимое моего файла pg_hba.conf. Как это выглядит на данный момент:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

@[email protected]# "local" is for Unix domain socket connections only
@[email protected]   all         all                               @[email protected]
# IPv4 local connections:
host    all         all         127.0.0.1/32          @[email protected]
# IPv6 local connections:
host    all         all         ::1/128               @[email protected]

Возможно ли подключиться к серверу базы данных через туннель SSH с помощью моей текущей настройки и без изменения конфигурации сервера?

4b9b3361

Ответ 1

Предполагается, что ваш pg_hba.conf разрешает соединения с localhost. Самый простой способ заставить ваши туннельные соединения SSH появляться с локального хоста - сделать их на localhost.

Следующая команда SSH соединяется с remote.example.com как пользовательский "пользователь" и заставляет вашего ssh-клиента прослушивать на localhost, порт 1111/tcp. Любые соединения, сделанные с этим портом, будут перенаправлены через туннель ssh, а на стороне ssh серверы будут подключены к localhost, порт 5432/tcp. Поскольку мы подключаемся к localhost, соединения также будут отображаться на локальном хосте и должны соответствовать вашей существующей строке pg_hba.conf.

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

Если ожидается, что это длинный туннель, я бы рекомендовал использовать autossh

Чтобы подключиться с помощью psql-клиента на хосте, где вы используете ssh-клиент, используйте что-то вроде этого:

psql -h localhost -p 1111 -U your-db-username database-name

Затем вам будет предложено ввести пароль пользователя базы данных.

В качестве альтернативы вы можете добавить строку строки в файл с именем .pgpass в своем домашнем каталоге на клиенте, где вы используете psql:

localhost:1111:database-name:your-db-user:your-db-password