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(アップロードするファイルストリーム, アップロード先ファイルパス);
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接続でのファイル転送をご紹介しました。