SSH पोर्ट फ़ॉरवर्डिंग का उपयोग करें।
Python Paramiko का उपयोग करके नेस्टेड SSH से कोड को संशोधित करना डेटाबेस टनलिंग के लिए, आपको इस तरह का एक कोड मिलता है:
# 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
Paramiko के चारों ओर सिर्फ एक आवरण है। इसलिए सामान्य तौर पर, आप इसका उपयोग कोड को सरल बनाने के लिए कर सकते हैं, जब तक कि आपके पास अतिरिक्त पैकेज स्थापित करने से रोकने वाले कुछ प्रतिबंध न हों।
उदाहरण के लिए:Python में SSH टनलिंग के माध्यम से PostgreSQL डेटाबेस से कनेक्ट करना
MongoDB के बारे में इसी प्रश्न के आधार पर:
Mongo डेटाबेस से कनेक्ट और क्वेरी करें पायथन में निजी कुंजी के साथ SSH
।
अनिवार्य चेतावनी:AutoAddPolicy
. का उपयोग न करें - आप MITM हमलों
से सुरक्षा खो रहे हैं ऐसा करने से। एक सही समाधान के लिए, देखें Paramiko "Unknown Server"
।