2015-06-22 4 views
1

У меня есть сервер PostgreSQL, а отдельный компьютер является его клиентом. Они находятся в одной сети. Если я использую Psql команду какИдентификация аутентификации прошла неудачно на PostgreSQL через туннель SSH

psql --host db_ip_address --port 5432 --user user base_name

соединение идет хорошо и все работает.

Но если я открою SSH туннель к БД сервера, например:

ssh -L 63333:localhost:5432 [email protected]_ip_address

, а затем попытаться сделать то же самое, как:

psql --host localhost --port 63333 --user user base_name

чем вдруг исходящее сообщение об ошибке :

psql: FATAL: Ident authentication failed for user "user"

pg_hba.conf на сервере есть эти строки:

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    127.0.0.1/32   trust 
host all    all    192.168.0.49/32   trust 
host all    all    192.168.0.50/32   trust 
host all    all    192.168.0.48/32   trust 
# IPv6 local connections: 
host all    all    ::1/128     ident 

мне нужно использовать SSH туннелей, потому что я на самом деле нужно еще один туннель для моего собственного компьютера, и это единственный способ получить подключение к БД на нем. И я не хочу менять какую-либо конфигурацию или базу на сервере PostgreSQL, потому что он работает в режиме реального времени. Надежды на помощь.

ответ

2

На основании сообщения об ошибке и pg_hba.conf сервер разрешает localhost на свой IPv6-адрес, привязанный к аутентификации ident.

В качестве решения, вы можете либо:

  • изменение pg_hba.conf установить trust метод ::1/128, как это уже имеет место для 127.0.0.1/32

  • или запустить psql --host 127.0.0.1 --port 63333 [other options]..., чтобы заставить адрес IPv4.

+0

На самом деле, это похоже на решение. Я просто создаю туннели, используя '' 'ssh -L 63333: 127.0.0.1: 5432 root @ db_ip_address''', и это неожиданно работает! Thanx! – Pycz