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 с помощью моей текущей настройки и без изменения конфигурации сервера?
Ответы
Ответ 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