एक ज्ञात होस्ट फ़ाइल कैसे बनाएं? [डुप्लिकेट]
मैं अजगर का उपयोग कर एक SFTP साइट से कनेक्ट करने का प्रयास कर रहा हूं, लेकिन ज्ञात_होस्ट फ़ाइल मेरी विंडोज़ 10 मशीन पर मौजूद नहीं है। मैंने पाया कि सर्वर से कनेक्ट करते समय होस्ट कुंजी दिखाई देती है:https://winscp.net/eng/docs/ssh_verifying_the_host_key
मैं इसे एक ज्ञात_होस्ट फ़ाइल में कैसे परिवर्तित करूं जिसे मैं अपने पायथन कोड में उपयोग कर सकता हूं?
मैंने एक फ़ाइल बनाने की कोशिश की जैसे: hostname ssh-rsa 2EP...8MZ
ऊपर के उदाहरण में, लेकिन मुझे एक अवैध होस्ट कुंजी त्रुटि मिली:Error('Incorrect padding'))
धन्यवाद।
import pysftp
cnopts = pysftp.CnOpts(knownhosts='C:\\Users\\Documents\\known_hosts')
with pysftp.Connection('xxx',username='xxx', password='xxx',cnopts=cnopts) as sftp:
localpath='TEST.txt'
remotepath='TEST.txt'
sftp.put(localpath,remotepath)
sftp.close()
जवाब
पहले आप वास्तव में जानना चाहेंगे कि आप किस प्रोटोकॉल का उपयोग कर रहे हैं। आपके प्रश्न में आपने कई बार एफ़टीपी का उल्लेख किया है, और आपका कोड + जिस अवधारणा के बारे में आप जान रहे हैं (ज्ञात_होस्ट्स) वह एसएफटीपी चीजें हैं।
एफ़टीपी और एसएफटीपी दो पूरी तरह से अलग-अलग प्रोटोकोल हैं, एफ़टीपी एक ग्राहक और सर्वर के बीच फ़ाइल स्थानांतरित करने के लिए एक और एसएफटीपी एक एसएसएच क्लाइंट और सर्वर के बीच फ़ाइलों को स्थानांतरित करने के लिए एक है।
हल किया!!! इसलिए मैं विंडोज़ पर हूँ और sftp स्थानान्तरण के लिए FileZilla और WinScp का उपयोग करता हूँ, लेकिन C: \ Users .... ssh फ़ाइल का अब तक कोई अस्तित्व नहीं है जहाँ तक मैं जानता हूँ। मैंने Windows SSH क्लाइंट डाउनलोड किया है:https://www.howtogeek.com/336775/how-to-enable-and-use-windows-10s-built-in-ssh-commands/
और फिर सर्वर से कनेक्ट करने के लिए PowerShell का उपयोग किया। जब आप कमांड दर्ज करते हैं: ssh hostname
यह आरएसए फिंगरप्रिंट को बताएगा और पूछेगा कि क्या आप कनेक्ट करना चाहते हैं। हां दर्ज करें और यह "चेतावनी: स्थायी रूप से जोड़ा जाएगा" होस्ट नाम को ज्ञात मेजबानों की सूची में जोड़ा जाएगा। ssh फ़ाइल तब आपके C: \ Users .... ssh निर्देशिका में दिखाई देगी। तब इसे अजगर में संदर्भित किया जा सकता है।
धन्यवाद।