PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Настройте SSH тунел с Paramiko за достъп до PostgreSQL

Използвайте SSH пренасочване на портове.

Промяна на кода от Вложен SSH с помощта на Python Paramiko за тунелиране на база данни получавате код като този:

# establish SSH tunnel
self.ssh = paramiko.SSHClient()
# ...
self.ssh.connect(hostname=ssh_host, username=ssh_user, password=ssh_password)

transport = ssh_client.get_transport()
dest_addr = (db_host, db_port)
local_unique_port = 4000 # any unused local port
local_host = 'localhost'
local_addr = (local_host, local_unique_port)
vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr, local_addr)

self.engine = create_engine(
    'postgres+psycopg2://{}:{}@{}:{}/{}'.format(
        db_user, db_password, local_host, local_unique_port, db))

Ако базата данни на PostgreSQL работи на самия SSH сървър, тогава тя обикновено ще слуша само на интерфейса за обратна връзка. В този случай db_host трябва да бъде зададено на localhost .

Все пак имайте предвид, че sshtunnel е просто обвивка около Парамико. Така че като цяло можете да го използвате за опростяване на кода, освен ако нямате ограничения, които ви пречат да инсталирате допълнителни пакети.

Например:Свързване към PostgreSQL база данни чрез SSH тунелиране в Python

Въз основа на същия въпрос за MongoDB:
Свързване и запитване към базата данни на Mongo SSH с частен ключ в Python
.

Задължително предупреждение:Не използвайте AutoAddPolicy - Губите защита срещу MITM атаки постъпвайки така. За правилно решение вижте Paramiko „Неизвестен сървър“ .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да потърся нулеви стойности в json поле тип postgresql?

  2. Как да изчислим процентил в PostgreSQL

  3. Разделете дадения низ и подгответе изявление за case

  4. Как да обобщим всички редове въз основа на колона за изброяване в PostgreSQL part2?

  5. Задействане за вмъкване на редове в отдалечена база данни след изтриване