Подключение к RDS Postgres с удаленной машины
Я настроил экземпляр RDS Postgres для тестирования, но у меня возникли проблемы с подключением. Я создал группу безопасности и по умолчанию разрешил всем хостам (0.0.0.0/0) порт 5432, но по какой-то причине я не могу подключиться. Я попытался подключиться к порту 5432 на машине, но, похоже, он закрыт. Есть идеи? Я проверил, что группа безопасности использует правильную группу безопасности.
Это моя конфигурация
TCP
Port (Service) Source Action
5432 0.0.0.0/0 Delete
Вот как я пытаюсь подключиться к службе rds
psql -p 5432 -h example.cs945smhrv09.us-west-2.rds.amazonaws.com -U example example
UPDATE
OK чувствую себя немного глупо, выяснив, что rds запускается в частной подсети 172. Мне удалось подключиться к экземпляру ec2.
Вопрос теперь есть способ поставить это на общедоступный адрес, с которым я могу подключиться? Я хотел бы настроить его с помощью группы безопасности, которая ограничивает исходный ip, но затем сможет подключиться к нему с помощью psql с моего рабочего стола.
Обновление 2
Я не помню всех деталей, когда я изначально разместил этот вопрос, но это уже не проблема. Теперь у нас есть vpc управления, с которым мы подключаемся к серверу vpn. Сети управления vpc доверяют группы безопасности prod и devel для экземпляров rds. У нас нет проблем с общением с ними без добавления каких-либо публичных ips.
Ответы
Ответ 1
Шаг 4 мастера настройки RDS ( "Дополнительная конфигурация" ) позволяет выбрать, является ли БД общедоступным или нет (если это не так, доступ ограничен вашим VPC, независимо от настроек группы безопасности). Я бы предположил, что определяет, разрешено ли имя хоста до 54. * vs 172. *.
Возможно, ваш первый экземпляр был закрыт - насколько я могу сказать, это невозможно изменить после инициализации. У меня была аналогичная проблема, и создание нового экземпляра, доступного для публичного доступа, разрешило его для меня.
Ответ 2
Мой брандмауэр моей компании заблокировал исходящий трафик на порт postgres по умолчанию, 5432. Я не понимал этого, пока не протестировал порт с помощью netcat в окне терминала, как показано ниже:
nc -zv portquiz.net 5432
Надеюсь, это спасет кого-то полдня, когда он будет возиться с группами безопасности AWS.
Ответ 3
Абсолютно там. У меня есть pgadmin, загруженный на мой локальный компьютер, подключенный к моему экземпляру RDS. |
Я только что подтвердил, что могу подключиться с использованием того же синтаксиса, который вы использовали для psql, хотя для меня не нужен -U (я все же включил оба параметра "example" )
Я отредактировал группу безопасности по умолчанию и добавил, что мой IP (Ip машины, с которой я подключаюсь)/32, разрешен, хотя я уверен, что вы можете получить меньше ограничений, чем это, но я бы начните там и посмотрите, поможет ли это.
Ответ 4
Это, скорее всего, вызвано правилами исходящего брандмауэра. Если вы находитесь за корпоративным брандмауэром, они часто будут блокировать исходящие порты выше определенного номера. Чтобы избежать этого, вам нужно настроить туннель SSH.
http://conoroneill.net/accessing-amazon-rds-instances-from-your-desktop/
Ответ 5
У меня была эта проблема. Это не является прямым решением, но может работать для некоторых. Я установил группу безопасности Postgres для приема соединений, поступающих с сервера, который будет использовать его (тот же VPC). Затем я настроил свой клиент Postgres для использования туннелирования ssh. Если мне нужно использовать командную строку, я просто SSH на этом сервере, а затем psql
оттуда.