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(アップロードするファイルストリーム, アップロード先ファイルパス);
ここまでで、ファイルのダウンロードまたはアップロードが実装できます。
実装サンプル
上記までの内容を元に実装してみました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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接続でのファイル転送をご紹介しました。
