sql >> Databáze >  >> RDS >> PostgreSQL

Nastavte SSH tunel pomocí Paramiko pro přístup k PostgreSQL

Použijte přesměrování portů SSH.

Úprava kódu z Vnořené SSH pomocí Pythonu Paramiko pro tunelování databáze získáte kód jako tento:

# 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))

Pokud databáze PostgreSQL běží na samotném SSH serveru, bude obvykle naslouchat pouze na rozhraní zpětné smyčky. V tom případě db_host by měl být nastaven na localhost .

Upozorňujeme však, že sshtunnel je jen obal kolem Paramiko. Obecně jej tedy můžete použít ke zjednodušení kódu, pokud nemáte nějaká omezení, která vám brání v instalaci dalších balíčků.

Například:Připojení k databázi PostgreSQL prostřednictvím tunelování SSH v Pythonu

Na základě stejné otázky o MongoDB:
Připojte se a dotazujte se na databázi Mongo přes SSH se soukromým klíčem v Pythonu
.

Povinné upozornění:Nepoužívejte AutoAddPolicy – Ztrácíte ochranu před útoky MITM učiněním tohoto. Správné řešení naleznete v části Paramiko "Neznámý server" .




  1. Jak spustit uloženou proceduru na serveru SQL každou hodinu?

  2. jak použít hodnotu sloupce jako vstup do prostorové operace

  3. Jak získat seznam všech jazyků v SQL Server (T-SQL)

  4. Kdy použít Common Table Expression (CTE)