PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Siapkan terowongan SSH dengan Paramiko untuk mengakses PostgreSQL

Gunakan penerusan port SSH.

Memodifikasi kode dari SSH bersarang menggunakan Python Paramiko untuk tunneling database, Anda mendapatkan kode seperti ini:

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

Jika database PostgreSQL berjalan di server SSH itu sendiri, biasanya database tersebut hanya akan mendengarkan pada antarmuka loopback. Dalam hal ini db_host harus disetel ke localhost .

Meskipun perhatikan bahwa sshtunnel hanyalah pembungkus di sekitar Paramiko. Jadi secara umum, Anda dapat menggunakannya untuk menyederhanakan kode, kecuali Anda memiliki beberapa batasan yang mencegah Anda menginstal paket tambahan.

Misalnya:Menghubungkan ke database PostgreSQL melalui tunneling SSH dengan Python

Berdasarkan pertanyaan yang sama tentang MongoDB:
Hubungkan dan kueri database Mongo SSH dengan kunci pribadi di Python
.

Peringatan wajib:Jangan gunakan AutoAddPolicy - Anda kehilangan perlindungan terhadap serangan MITM dengan melakukan itu. Untuk solusi yang tepat, lihat Paramiko "Server Tidak Dikenal" .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tips Penerapan Hybrid Cloud PostgreSQL

  2. Hapus duplikat di postgres

  3. Pangkas spasi tambahan dengan PostgreSQL

  4. Bagaimana cara menerima pemberitahuan otomatis tentang perubahan tabel?

  5. Django SearchVector menggunakan icontains