SFTP küldése és fogadása a .NET-ben
környezet
- Visual Studio
-
- Visual Studio Közösség 2017
- Visual Studio Közösség 2019
- .NET mag
-
- 3.1
- .NET keretrendszer
-
- 4
- 4.8
- SSH.NET
-
- 2016.1.0
※ Más verziókban is működik, de meg nem erősített
Először
Hozzon létre egy ügyfélprogramot az SFTP számára a .NET keretrendszerben (.NET Core) lévő fájlok küldéséhez és fogadásához. Az SFTP-vel kapcsolatos programok nem szabványosak a .NET-ben. A harmadikféltől származókönyvtárat SSH.NET fogjuk használni.
SSH.NET a közelmúltban nem frissítették, de viszonylag könnyű végrehajtani a programot. Nem hiszem, hogy sok hátránya van a használatának, mert támogatja a .NET Standardot is.
Ezúttal az SFTP által küldött és fogadott fájlokat küldünk és fogadunk a .NET Core konzolprojektben. SSH.NET számos keretrendszert támogat, így a konzoltól eltérő projektekben is megvalósítható.
Előzetes előkészítés
- A Visual Studio-t telepíteni kell
- SFTP-kiszolgálóval rendelkezik az sftp viselkedésének ellenőrzésére
- Van egy fiókja, amelyhez csatlakozhat az SFTP-hez
- Jelszóhitelesítés engedélyezése sftp-kiszolgálókon jelszóhitelesítés végrehajtásakor
- Nyilvános kulcsú hitelesítés végrehajtásakor helyezze el a nyilvános kulcsot az SFTP-kiszolgálón, és legyen egy privát kulcs (OpenSSH formátum), amelyet be kell töltenie az ügyfélbe.
telepítse SSH.NET
Hozzon létre egy .NET Core konzolprojektet a Visual Studióban. A projekt neve SshNetBasic.
Megkapja a "SSH.NET" a NuGet-től.
A csomag hozzáadva.
Jelszó hitelesítése
Jelszóhitelesítéshez használja a PasswordAuthenticationMethod osztályt a felhasználónév és a jelszó beállításához.
Állítsa be a ConnectionInfo osztályt egy állomásnévvel (például sorceryforce.net vagy 192.168.0.1) és az imént létrehozott hitelesítési etoddal. Adja át a "SftpClient" osztálynak.
Az SftpClient.Connect metódus valójában a kapcsolatot hozza, és ha sikerül, kivételt tesz a következő művelet alól, és meghibásodás esetén. Válassza le a leválasztási módszert.
// 必要な情報を設定する
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();
Nyilvános kulcsú hitelesítés
Helyezze a személyes kulcsot az ügyfél bármely mappájába. Amint az a beállítási tippekben is látható, ha a személyes kulcsot olyan mappába helyezi, amely más fiókokhoz is hozzáférhet, Előfordulhat, hogy az SFTP-feldolgozás sikertelen. Győződjön meg arról, hogy rendelkezik hozzáféréssel a futtatott fiókhoz vagy csak a Rendszergazdákhoz.
A jelszóhitelesítéstől eltérő, hogy a hitelesítési módszer PrivateKeyAuthenticationMethod-ra változott.
Adja meg a "PrivateKeyFile" értéket második argumentumként, és adja meg azt a fájl elérési útját és jelmondatát (ha be van állítva), ahol a személyes kulcs található.
// 必要な情報を設定する
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();
Fájlok küldése és fogadása az SFTP-vel
Fájlok küldése és fogadása a küldési és fogadási kód írásával, miután csatlakozott a kiszolgálóhoz az SftpClient.Connect módszerrel. Amit csinálunk, az az, hogy "olvassa el a helyi fájlokat, és küldje el őket az SFTP szerverekre", és "töltse le a fájlokat az SFTP szerverekről, és mentse őket helyben". Különösen nehéz feladatok írása nélkül valósítható meg.
A japán fájlneveket problémamentesen küldheti és fogadhatja.
/* ---------------- 中略 ------------------- */
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();
Összefoglalás
SSH.NET megkönnyíti az SFTP küldését és fogadását. Hosszabb ideig tarthat a tesztkörnyezet elkészítése, mint egy program végrehajtása.
Az Sftp lényegében ugyanazt csinálja, mint az FTP, és a munka nagy részét SSH.NET hajtják végre. Ez a tár akkor ajánlott, ha SFTP programot szeretne használni.