Подключение к удаленной базе данных через прыжковый сервер в 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, потому что вам нужно, чтобы он нашел ваш конец туннеля, а не другой его конец.

Вернуться на верх