SFTP sūtīšana un saņemšana programmā .NET

Lapas izveides datums :

vide

Visual Studio
  • Visual Studio kopiena 2017
  • Visual Studio kopiena 2019
.NET core
  • 3.1
.NET Framework
  • 4
  • 4.8
SSH.NET
  • 2016.1.0

※ Tas darbojas citās versijās, bet tas nav apstiprināts

Sākumā

Izveidojiet klienta programmu SFTP, lai nosūtītu un saņemtu failus .NET Framework (.NET Core). Ar SFTP saistītās programmas programmā .NET nav standarta. Mēs izmantosimtrešās pusesbibliotēkas SSH.NET .

SSH.NET pēdējā laikā nav atjaunināta, bet programmu ir salīdzinoši viegli īstenot. Es nedomāju, ka ir daudz trūkumu, izmantojot to, jo tas arī atbalsta .NET Standard.

Šoreiz mēs nosūtīsim un saņemsim SFTP failus .NET Core konsoles projektā. SSH.NET atbalsta daudzas sistēmas, tāpēc to var īstenot projektos, kas nav konsole.

Sagatavošanās iepriekš

  • Ir jāinstalē Visual Studio
  • Jums ir SFTP serveris, lai pārbaudītu sftp uzvedību
  • Jums ir konts, ar kuru varat izveidot savienojumu ar SFTP
  • Iespējot paroles autentifikāciju sftp serveros, veicot paroles autentifikāciju
  • Veicot publiskās atslēgas autentifikāciju, novietojiet publisko atslēgu SFTP serverī, un laukā ir jāielādē privātā atslēga (OpenSSH formāts).

Instalēt SSH.NET

Izveidojiet .NET Core konsoles projektu programmā Visual Studio. Projekta nosaukums ir SshNetBasic.

Saņem "SSH.NET" no NuGet.

image

image

image

image

Iepakojums ir pievienots.

image

Paroles autentifikācija

Lai autentificētu paroli, izmantojiet klasi PasswordAuthenticationMethod, lai iestatītu lietotājvārdu un paroli.

Iestatiet klasi ConnectionInfo ar resursdatora nosaukumu (piemēram, sorceryforce.net vai 192.168.0.1) un tikko ģenerēto autentifikācijas methodu. Nododiet to "SftpClient" klasei.

SftpClient.Connect metode faktiski padara savienojumu, un, ja tas izdodas, tas rada izņēmumu nākamajai operācijai un neveiksmes gadījumā. Atvienojieties ar atvienošanas metodi.

// 必要な情報を設定する
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();

Publiskās atslēgas autentifikācija

Novietojiet privāto atslēgu jebkurā klienta mapē. Kā redzat iestatīšanas padomos, ja ievietojat savu privāto atslēgu mapē, kas var piekļūt citiem kontiem, SFTP apstrāde var neizdoties. Pārliecinieties, vai jums ir piekļuve jūsu pārvaldītajam kontam vai tikai administratoriem.

image

Tas, kas atšķiras no paroles autentifikācijas, ir tas, ka autentifikācijas metode ir mainīta uz PrivateKeyAuthenticationMethod.

Kā otro argumentu norādiet "PrivateKeyFile" un norādiet faila ceļu un ieejas frāzi (ja tā ir iestatīta), kurā ir ievietota privātā atslēga.

// 必要な情報を設定する
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();

Failu sūtīšana un saņemšana ar SFTP

Nosūtiet un saņemiet failus, rakstot sūtīšanas un saņemšanas kodu pēc savienojuma ar serveri ar SftpClient.Connect metodi. Tas, ko mēs darām, ir "lasīt vietējos failus un nosūtīt tos uz SFTP serveriem" un "lejupielādēt failus no SFTP serveriem un saglabāt tos lokāli". To var īstenot, nerakstot īpaši sarežģītus uzdevumus.

Jūs varat nosūtīt un saņemt japāņu failu nosaukumus bez problēmām.

/* ---------------- 中略 ------------------- */

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();

Kopsavilkuma

SSH.NET atvieglo SFTP nosūtīšanu un saņemšanu. Testa vides sagatavošana var aizņemt ilgāku laiku nekā programmas ieviešanai.

Sftp būtībā dara to pašu, ko FTP, un lielākā daļa darba tiek īstenota SSH.NET. Šī bibliotēka ir ieteicama, ja vēlaties izmantot SFTP programmāli.