SSH-туннель к частному экземпляру RDS из django
У меня есть приложение django и экземпляр RDS в частном VPC. Я хочу подключиться к нему с моей локальной машины, используя ssh туннель. Я уже настроил это и попробовал подключение из pg-admin
, так что в этой конфигурации не должно быть проблем.
Теперь моя проблема в том, как сделать этот ssh туннель в django. Я попробовал это решение, но похоже, что sshtunnel
пакет python не поддерживает openssh
ключи.. Я пытался сгенерировать правильный ключ с помощью ssh-keygen -t rsa
, но он по-прежнему содержит OPENSSH
закрытый ключ. Я думаю, это потому, что я генерирую ключ из MacOs. Поэтому я сгенерировал ключ из среды Linux и добавил его правильно. Теперь моя конфигурация выглядит следующим образом:
from sshtunnel import SSHTunnelForwarder
ssh_tunnel = SSHTunnelForwarder(
'<ec2 host amazon>',
ssh_private_key='~/ec2-db',
ssh_private_key_password='',
ssh_username='ubuntu',
remote_bind_address=('localhost', 5432),
)
print("Here")
ssh_tunnel.start()
print("THere")
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'HOST': '<rds amazon dns>',
'PORT': ssh_tunnel.local_bind_port,
'NAME': '***',
'USER': '***',
'PASSWORD': '***',
},
}
Сервер с такой конфигурацией может запуститься, но я не могу получить доступ к нему на localhost:8000
, поэтому я предполагаю, что соединение с БД было успешно установлено, но теперь я не могу его проверить. Есть идеи, что может быть не так?
Примечание: Эти отпечатки появляются дважды, по какой-либо причине.
Туннель ssh сделан через экземпляр EC2 с доступом к базе данных (который развернут в частном VPC). Как я уже сказал, я протестировал туннель с помощью pgadmin
и все работает нормально.