.NET में SFTP भेजें और प्राप्त करें
पर्यावरण
- विजुअल स्टूडियो
-
- विजुअल स्टूडियो कम्युनिटी 2017
- विजुअल स्टूडियो कम्युनिटी 2019
- .NET कोर
-
- 3.1
- .NET फ्रेमवर्क
-
- 4
- 4.8
- SSH.NET
-
- 2016.1.0
※ यह अन्य संस्करणों में काम करता है, लेकिन यह अपुष्ट है
पहले
.NET फ्रेमवर्क (.NET कोर) में फ़ाइलें भेजने और प्राप्त करने के लिए एसएफटीपी के लिए एक क्लाइंट प्रोग्राम बनाएं। SFTP से संबंधित कार्यक्रम .NET में मानक नहीं हैं। हम SSH.NETतीसरे पक्षके पुस्तकालय का उपयोग करेंगे ।
SSH.NET हाल ही में अद्यतन नहीं किया गया है, लेकिन यह अपेक्षाकृत कार्यक्रम को लागू करने के लिए आसान है । मुझे नहीं लगता कि इसका उपयोग करने के कई नुकसान हैं क्योंकि यह .NET मानक का भी समर्थन करता है।
इस बार, हम .NET कोर कंसोल परियोजना में SFTP द्वारा फाइलें भेजेंगे और प्राप्त करेंगे। SSH.NET कई चौखटे का समर्थन करता है, इसलिए इसे कंसोल के अलावा अन्य परियोजनाओं में लागू किया जा सकता है।
पहले से तैयारी
- विजुअल स्टूडियो स्थापित किया जाना चाहिए
- आपके पास एफटीपी व्यवहार को सत्यापित करने के लिए एक एसएफटीपी सर्वर है
- एक खाता है जिसे आप SFTP के साथ कनेक्ट कर सकते हैं
- पासवर्ड ऑथेंटिकेशन करते समय एसएफटीपी सर्वर पर पासवर्ड प्रमाणीकरण सक्षम करें
- सार्वजनिक कुंजी प्रमाणीकरण करते समय, एसएफटीपी सर्वर पर सार्वजनिक कुंजी रखें और ग्राहक में लोड होने के लिए एक निजी कुंजी (ओपनएसएच प्रारूप) हो।
SSH.NET स्थापित करें
विजुअल स्टूडियो में .NET कोर कंसोल प्रोजेक्ट बनाएं। परियोजना का नाम SshNetBasic है।
NuGet से "SSH.NET" हो जाता है ।
पैकेज को जोड़ा गया है।
पासवर्ड प्रमाणीकरण
पासवर्ड ऑथेंटिकेशन के लिए यूजरनेम और पासवर्ड सेट करने के लिए पासवर्डऑथेनेशन मेथड क्लास का इस्तेमाल करें।
एक मेजबान नाम (जैसे sorceryforce.net या 192.168.0.1) और प्रमाणीकरणmethod है कि आप अभी उत्पन्न के साथ ConnectionInfo वर्ग सेट करें। इसे "SftpClient" कक्षा में पास करें।
SftpClient.Connect विधि वास्तव में कनेक्शन बनाता है, और यदि यह सफल होता है, तो यह अगले ऑपरेशन के लिए एक अपवाद फेंकता है और विफलता के मामले में। डिस्कनेक्ट विधि से डिस्कनेक्ट करें।
// 必要な情報を設定する
var host = "";
var userName = "";
var password = "";
// 認証メソッドを作成
var authMethod = new Renci.SshNet.PasswordAuthenticationMethod(userName, password);
// 接続情報を作成
var connectionInfo = new Renci.SshNet.ConnectionInfo(host, userName, authMethod);
// SFTP クライアントを作成
var client = new Renci.SshNet.SftpClient(connectionInfo);
// 接続。失敗した場合は例外が発生
client.Connect();
// 切断
client.Disconnect();
सार्वजनिक कुंजी प्रमाणीकरण
ग्राहक पर किसी भी फ़ोल्डर में निजी कुंजी रखें। जैसा कि आप सेटअप सुझावों में देख सकते हैं, यदि आप अपनी निजी कुंजी को एक फ़ोल्डर में रखें जो अन्य खातों तक पहुंच सकता है, एसएफटीपी प्रोसेसिंग फेल हो सकती है। सुनिश्चित करें कि आपके द्वारा चलाए जाने वाले खाते तक पहुंच है या केवल प्रशासक हैं।
पासवर्ड प्रमाणीकरण से अलग बात यह है कि प्रमाणीकरण विधि निजीऑएथेंटिकेशन मेथड में बदल गई है।
दूसरे तर्क के रूप में "PrivateKeyFile" निर्दिष्ट करें और फ़ाइल पथ और पासवाध (यदि सेट) निर्दिष्ट करें जहां निजी कुंजी रखी गई है।
// 必要な情報を設定する
var host = "";
var userName = "";
var passPhrase = "";
var keyFilePath = @"C:\xxxxxxxxxx\id_rsa";
// 認証メソッドを作成
var authMethod = new Renci.SshNet.PrivateKeyAuthenticationMethod(userName,
new Renci.SshNet.PrivateKeyFile(keyFilePath, passPhrase));
// 接続情報を作成
var connectionInfo = new Renci.SshNet.ConnectionInfo(host, userName, authMethod);
// SFTP クライアントを作成
var client = new Renci.SshNet.SftpClient(connectionInfo);
// 接続。失敗した場合は例外が発生
client.Connect();
// 切断
client.Disconnect();
SFTP के साथ फ़ाइलें भेजें और प्राप्त करें
SftpClient.Connect विधि के साथ सर्वर से कनेक्ट करने के बाद भेजें और कोड प्राप्त करके फ़ाइलें भेजें और प्राप्त करें। हम जो कर रहे हैं वह है "स्थानीय फ़ाइलों को पढ़ें और उन्हें एसएफटीपी सर्वर पर भेजें" और "एसएफटीपी सर्वर से फाइलें डाउनलोड करें और उन्हें स्थानीय रूप से सहेजें"। यह विशेष रूप से कठिन कार्यों को लिखने के बिना लागू किया जा सकता है ।
आप बिना किसी समस्या के जापानी फ़ाइल नाम भेज सकते हैं और प्राप्त कर सकते हैं।
/* ---------------- 中略 ------------------- */
var sendFilePath = @"C:\xxxxxxxxxxxx\テスト.txt";
var reseiveFilePath = @"C:\xxxxxxxxxxxx\テスト2.txt";
/* ---------------- 中略 ------------------- */
// 接続。失敗した場合は例外が発生
client.Connect();
// ファイルのアップロード(上書き)
using var sendStream = File.OpenRead(sendFilePath);
client.UploadFile(sendStream, Path.GetFileName(sendFilePath), true);
// ファイルのダウンロード(上書き)
using var reseiveStream = File.OpenWrite(reseiveFilePath);
client.DownloadFile(Path.GetFileName(sendFilePath), reseiveStream);
// 切断
client.Disconnect();
सारांश
SSH.NET एसएफटीपी भेजना और प्राप्त करना आसान बनाता है। किसी कार्यक्रम को लागू करने की तुलना में परीक्षण वातावरण तैयार करने में अधिक समय लग सकता है।
Sftp अनिवार्य रूप से FTP के रूप में एक ही बात करता है, और काम के अधिकांश SSH.NET में लागू किया जाता है । यदि आप SFTP प्रोग्रामली का उपयोग करना चाहते हैं तो इस पुस्तकालय की सिफारिश की जाती है।