Подключение к удаленной базе данных через прыжковый сервер в Django
Я пытаюсь туннелировать соединение с db в приложении django через сервер jump, но не могу заставить его работать, потому что django manage.py обрабатывает & обрабатывает соединения. Вот что у меня есть в settings.py
#process ssh_key first
ssh_key= os.getenv('SSH_KEY', '').encode('utf8').decode('unicode_escape')
server ={}
with sshtunnel.open_tunnel(
(os.environ.get('SSH_HOST'),int(os.getenv('SSH_PORT'))),
ssh_pkey=paramiko.RSAKey.from_private_key(io.StringIO(ssh_key)),
ssh_username= os.environ.get('SSH_USERNAME'),
remote_bind_address=(os.environ.get('DB_HOST'), int(os.getenv('DB_PORT'))),
) as ssh_proxy_host:
server={
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'HOST': os.environ.get('DB_HOST'),
'PORT': ssh_proxy_host.local_bind_port,
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('DB_USER'),
'PASSWORD': os.environ.get('DB_PASS'),
}
# here's where I should have the connection function to db, but don't know if django has that option available
Истинный удаленный хост указывается при создании туннеля. HOST, используемый для соединения с db, должен быть localhost, потому что вам нужно, чтобы он нашел ваш конец туннеля, а не другой его конец.