PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Skonfiguruj tunel SSH za pomocą Paramiko, aby uzyskać dostęp do PostgreSQL

Użyj przekierowania portów SSH.

Modyfikacja kodu z Zagnieżdżonego SSH przy użyciu Pythona Paramiko do tunelowania bazy danych otrzymujesz kod taki:

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

Jeśli baza danych PostgreSQL działa na samym serwerze SSH, zwykle będzie nasłuchiwać tylko na interfejsie pętli zwrotnej. W takim przypadku db_host powinien być ustawiony na localhost .

Pamiętaj jednak, że sshtunnel to tylko opakowanie wokół Paramiko. Ogólnie rzecz biorąc, możesz go użyć do uproszczenia kodu, chyba że masz pewne ograniczenia uniemożliwiające instalowanie dodatkowych pakietów.

Na przykład:Łączenie z bazą danych PostgreSQL przez tunelowanie SSH w Pythonie

Na podstawie tego samego pytania dotyczącego MongoDB:
Połącz i przeszukuj bazę danych Mongo przez SSH z kluczem prywatnym w Pythonie
.

Obowiązkowe ostrzeżenie:nie używaj AutoAddPolicy - Tracisz ochronę przed atakami MITM w ten sposób. Aby uzyskać prawidłowe rozwiązanie, zobacz Paramiko „Nieznany serwer” .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:BŁĄD:operator nie istnieje:liczba całkowita =znak zmienny

  2. BŁĄD:funkcja unnest(integer[]) nie istnieje w postgresql

  3. jak przekonwertować minuty całkowite na interwał w postgresie

  4. Surowe zapytanie Railsowe dla formatu csv, które ma zostać zwrócone przez kontroler

  5. Jak obliczyć medianę w PostgreSQL