2013-05-30 6 views
30

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

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

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

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

Что '@ authmethod @' должно означать? –

ответ

50

Возможно, ваш pg_hba.conf разрешает соединения с localhost. Самый простой способ заставить ваши туннельные соединения SSH появляться с localhost - сделать их - 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 
+0

Теперь я получаю сообщение об ошибке: 'FATAL: аутентификация пароля не удалась для пользователя« myuser »' – kozooh

+1

Если вы получаете «FATAL: аутентификация пароля» для пользователя «myuser» ', убедитесь, что ваше имя пользователя и пароль являются действительными учетными данными для удаленного экземпляра PostgreSQL. Я обновил ответ на примере того, как подключиться через туннель, используя клиент psql. – jeff

+0

Нет, это не причина. Я использовал ssh, autossh, я меняю psql-клиент, пробовал его на windows, linux ... Всюду я получаю вышеупомянутую ошибку. В ближайшие дни я свяжусь с администратором сервера. Надеюсь, он найдет возможную причину/решение моей проблемы. – kozooh

Смежные вопросы