2013-07-16 2 views
7

का उपयोग कर पायथन एसएसएच जब मैं पायथन स्क्रिप्ट से एसएसएच का उपयोग करता हूं तो मैं टोर के माध्यम से डेटा भेजने में सक्षम होना चाहता हूं। जब मैं मेजबान को मैन्युअल रूप से ssh करने के लिए ओपनएसएसएच क्लाइंट का उपयोग करता हूं तो टोर अपेक्षित काम करता है। यह मेरी एसएसएच कॉन्फ़िगरेशन फ़ाइल है।टोर प्रॉक्सी

host host 
user user 
hostname host.domain.com 
CheckHostIP no 
Compression yes 
Protocol 2 
ProxyCommand connect-proxy -S localhost:9050 %h %p 

मैं इस अजगर परीक्षण स्क्रिप्ट है:

import paraproxy 
import paramiko 

conf = paramiko.SSHConfig() 
conf.parse(open('/home/user/.ssh/config')) 
host = conf.lookup('host') 
print host 

client = paramiko.SSHClient() 
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
client.connect(host["hostname"], username=host["user"], password='test') 
client.close() 

यह स्क्रिप्ट करता है मैं कनेक्ट-प्रॉक्सी ProxyCommand साथ रूट करने के लिए टो के माध्यम से कनेक्शन (फिर से, यह एक मानक OpenSSH क्लाइंट के माध्यम से ठीक काम करता है) का उपयोग होस्ट के लिए ssh, हालांकि, यह ssh config फ़ाइल में प्रॉक्सी कॉन्मांड का उपयोग नहीं करता है, इस प्रकार यह टोर के माध्यम से यातायात को रूट नहीं करता है। मैंने कुछ अलग विन्यास की कोशिश की है, लेकिन मैं इसे काम नहीं कर सकता। इस काम को कैसे बनाया जाए इस पर कोई विचार?

उत्तर

13

आप ProxyCommand (सॉकेट जैसी वस्तु) बनाने के लिए और यह client.connect()

import paramiko 

conf = paramiko.SSHConfig() 
conf.parse(open('/home/user/.ssh/config')) 
host = conf.lookup('host') 
print host 

proxy = paramiko.ProxyCommand(host['proxycommand']) 

client = paramiko.SSHClient() 
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
client.connect(host["hostname"], username=host["user"], password='test', sock=proxy) 
client.close() 

Docs for connect() method को पारित की जरूरत है। नोट timeout पैरामीटर। यदि आप कुछ स्वचालन कर रहे हैं तो इसे निर्दिष्ट करना हमेशा एक अच्छा विचार है।

+0

क्या आपने वास्तव में उस कोड को चलाने का प्रयास किया है? जब आपने कोशिश की तो क्या यह काम करता था? –

+0

हां। लेकिन मैं एसएसएच के माध्यम से पॉक्सिंग कर रहा था: 'प्रॉक्सी कॉमांड एसएसएच उपयोगकर्ता @proxy.host.tld एनसी% एच% पी' – twil

+0

यह काम करता है। मैं पैराप्रोक्सी का उपयोग न करने के बारे में हिस्सा चूक गया। यह आयातित के साथ काम नहीं करता है। मैंने आपको उखाड़ फेंकने की कोशिश की, लेकिन गलती से आपको गिरा दिया। लेकिन मैं इस जवाब को स्वीकार करता हूं। धन्यवाद। –

संबंधित मुद्दे