Назад | Перейти на главную страницу

SSH-туннелирование к экземпляру RDS

У меня следующая настройка: экземпляр RDS, работающий в группе подсетей из 2 частных подсетей; экземпляр EC2, работающий в общедоступной подсети. Итак, я хочу подключиться к своему экземпляру RDS через экземпляр EC2.

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

ssh -L 3305:mydb.myrdsinstance.eu-west-1.rds.amazonaws.com:3306 ec2-user@myec2instance

Таким образом, я вошел в свой экземпляр ec2 и попытался получить доступ к базе данных с помощью:

mysql -h localhost -u mydbuser -p

Ввели правильный мастер-пароль и получили:

ОШИБКА 1045 (28000): доступ запрещен для пользователя mydbuser @ localhost (с использованием пароля: ДА)

Я также пробовал туннелировать из моего экземпляра ec2 (выполнив из него команду SSH), это также создает соединение, но я не могу получить доступ к базе данных так же, как указано выше.

Я пробовал запустить команду ssh с параметром -N, при этом курсор мигает, и ничего не происходит.

На моем локальном компьютере брандмауэр отключен, весь трафик разрешен как для экземпляра EC2, так и для RDS.

Я также попытался установить соединение с Workbench, и там происходит странная вещь. Когда я подключаюсь и ввожу мастер-пароль, я получаю сообщение «Не могу подключиться к серверу MySQL на 127.0.0.1 (111)». Но если я отмечу «Сохранить пароль в связке ключей», в следующий раз он подключится нормально без каких-либо изменений.

Как мне это исправить и подключиться к экземпляру RDS через туннель SSH с оболочкой?

ssh -L 3305:mydb.myrdsinstance.eu-west-1.rds.amazonaws.com:3306 ec2-user@myec2instance

Вам нужно пробросить порт 3306 не порт 3305.