コラム

FTPファイル転送の実装

コラム

SSH.NET(Renci.SshNet)でファイルを転送する方法を紹介。
※SSH.NETとは.NET向けのSSHライブラリです。

SSH.NETパッケージのインストール

SSHを操作するためにパッケージをインストールします。

「ツール」→「NuGetパッケージマネージャー」→「ソリューションのNuGetパッケージの管理」

を選択し管理画面を開きます。

検索窓へ「SSH.NET」を入力し、参照タブへ移動します。その中から、

「SSH.NET」

をインストールしてください。

コーディング要領

初めにSSH接続用のクライアントを生成します。

var client = new SftpClient(ホスト名, ユーザ名, パスワード);

次に接続を行います。

client.Connect();

接続が確立したら、ファイルをダウンロードまたはアップロードするコードを記述します。

//ダウンロード
client.DownloadFile(ダウンロードするファイルパス, ダウンロード先のファイルストリーム);
//アップロード
client.UploadFile(アップロードするファイルストリーム, アップロード先ファイルパス);

ここまでで、ファイルのダウンロードまたはアップロードが実装できます。

実装サンプル

上記までの内容を元に実装してみました。

using System.IO;
using Renci.SshNet;
private void sample()
{
  var sHost = "ホスト名";
  var sUser = "ユーザ名";
  var sPass = "パスワード";

  //SSHクライアント生成
  using (var client = new SftpClient(sHost, sUser, sPass))
  {

    //接続
    client .Connect();
    if (!client.IsConnected)
    {
      Console.WriteLine("SSH接続が確立しませんでした。");
      return;
    }

    //ファイルをアップロード
    using (Stream fs = File.OpenRead(@"C:\Temp\UploadFile.txt"))
    {
      client.UploadFile(fs, "/home/user1/UploadFile.txt");
    }

    //ファイルをダウンロード
    using (Stream fs = File.OpenWrite(@"C:\Temp\DownloadFile.txt"))
    {
      client.DownloadFile("/home/user1/UploadFile.txt", fs);
    }
  }
}

メソッドを実行すると、「C:\Temp\UploadFile.txt」というファイルがアップロードされ、
アップロードしたファイルが「C:\Temp\DownloadFile.txt」という名前で保存されます。

以上、SSH接続でのファイル転送をご紹介しました。

タイトルとURLをコピーしました