14

私は、FTP を使用して特定の宛先にファイルを自動的に送信する顧客向けのサービスを作成しました。歴史的な理由から、私は WinInet を使用して FTPing を実行しています。すべてうまくいきましたが、顧客は SFTP 接続のみを受け入れる宛先を 1 つ追加したいと考えています。

これを最初から実装するという考えはあまり好きではないので、ネイティブに、または WinInet を介して SFTP サーバーと通信する方法はありますか? 使用できるシステム ライブラリはありますか (P/Invoke を恐れません :))? そのためにサードパーティのコンポーネントを購入する必要がありますか? もしそうなら、どのコンポーネントをお勧めしますか?

4

7 に答える 7

24

.NET フレームワークでは、どのバージョンでも SFTP はサポートされていません。


SFTP にはサードパーティのライブラリを使用する必要があります。

WinSCP .NET アセンブリを使用できます。WinSCP NuGet パッケージもあります。

簡単な SFTP アップロード C# の例:

// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Sftp,
    HostName = "example.com",
    UserName = "user",
    Password = "mypassword",
    SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="
};

using (Session session = new Session())
{
    // Connect
    session.Open(sessionOptions);

    // Upload files
    session.PutFiles(@"d:\toupload\*", "/home/user/").Check();
}

他にもたくさんの例があります。


上記のように、C#、VB.NET、PowerShell などの SFTP コード テンプレートを WinSCP GUI に生成させることができます。

ここに画像の説明を入力


アセンブリは WinSCP スクリプトの単なるラッパーであるため、完全にネイティブな .NET コードではありません。そのため、.NET フレームワークのすべてのユース ケースに適合するわけではありません。主にタスクの自動化に適していますが、GUI アプリケーションの開発には多少適していますが、実際には Web アプリケーションには適していません。

完全にネイティブな .NET SFTP ライブラリについては、SSH.NETを参照してください。奇妙なことに、まだどの回答にも言及されていません。

(私は WinSCP の作者です)


Windows 10 には、コマンドライン OpenSSHsftpクライアントも付属しています。古いバージョンの Windows 用にダウンロードすることもできます。

于 2017-08-13T09:01:34.783 に答える
1

残念ながら、SFTP は WinInet やその他の標準的な Windows ライブラリではネイティブにサポートされていません。

/n Software のIP*Works SSH for .NETを使用して、さまざまな SFTP サーバーと通信することができました。

于 2009-12-10T13:56:59.273 に答える
0

JFYI:.NETのSFTPでおそらく最も機能が豊富なコンポーネントは、SFTPBlackboxです。

于 2011-03-08T13:02:01.827 に答える
0

http://sourceforge.net/projects/sharpssh/はあなたの最高の可能性があります。私は最終的に WinSCP 用のスクリプトを書きましたが、その方が簡単でした...

明確にするために編集します。SharpSSHはデッドプロジェクトであるため、https ://github.com/sshnet/SSH.NETのようなものをお勧めします

于 2009-12-10T13:56:46.043 に答える
0

.NET Framwork は、バージョン 2.0 以降、FtpWebRequest を介して FTP をサポートしています。SFTP はまだサポートされていません。

FTP と SFTP の両方が必要な場合は、サードパーティのコンポーネントを試す必要があります。しばしば推奨される Tamir Galによる SFTPのオープン ソース実装があります。または、 Rebex SFTPなどの商用 SFTP コンポーネントを試すこともできます。

次のコードは、Rebex SFTP チュートリアル ページから取得したものです。

// create client, connect and log in 
Sftp client = new Sftp();
client.Connect(hostname);
client.Login(username, password);

// upload the content of 'c:\data' directory and all subdirectories 
// to the '/wwwroot' directory at the server 
client.PutFiles(@"c:\data\*", "/wwwroot", SftpBatchTransferOptions.Recursive);

client.Disconnect();

FTPS と SFTP のどちらが必要なのかわからない場合は、両方を含むRebex File Transfer Packを確認してください。FTP API は、SFTP のものとほとんど同じです。

于 2009-12-17T00:07:21.230 に答える
-2

私はedtFTPnet / PROを使用しています

http://www.enterprisedt.com/products/edtftpnetpro/overview.html

よく働く

于 2009-12-10T15:22:38.663 に答える