SFTP küldése és fogadása a .NET-ben

Oldal létrehozásának dátuma :

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.

image

image

image

image

A csomag hozzáadva.

image

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.

image

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.