3

SFTP サーバーの接続の詳細を取得し、FileZilla で接続してから、その SFTP からファイルを正常にダウンロードしました。

私が持っていた唯一の詳細は、ホスト、ポート、ユーザー、およびパスでした。

現在、WinSCP .NET アセンブリ (C#) を使用して、この同じサーバーに接続しようとしています。

using(Session session = new WinSCP.Session()) {
    session.Open(new SessionOptions() { 
        Protocol = Protocol.,
        HostName = "ftp.*********.be",
        UserName ="*****",
        Password ="*****"
    });

    TransferOptions transferOptions = new TransferOptions();
    transferOptions.TransferMode = WinSCP.TransferMode.Binary;
    TransferOperationResult transferResult;
    transferResult = session.GetFiles("/downld/fileonserver.dbf",@"c:\testfolder\localfilename.dbf", false, transferOptions);

ここで何をしようとしても、SSH のキーを要求し続けますが、そのキーを持っていません。オンラインのどこかで 128 ビットの RSA キーを生成し、次のようなセッション オプションに入れました。

SshHostKeyFingerprint = "ssh-rsa 1024 82:09:12:b4:93:92:3a:61:10:90:61:12:b4:XX:XX:XX"

しかし、これはキーが無効であることを示しています。

これを機能させるには、サーバーからの公開/秘密SSHキーが必要かもしれないと思いましたが、残念ながらこのサーバーにアクセスできません。

FileZilla は KEYS を入力しなくても接続できるのに、C# プログラムで同じことができないのはなぜですか?

私はセキュリティ関連の専門家ではないので、正しい方向に向けてください。このスレッドを見つけましたが、FTP サーバー上のフォルダーにアクセスできず.ssh、これでどこに行くのか実際にはわかりません。

4

2 に答える 2

4
  1. SSH サーバーの公開ホスト キーの検証とクライアントの公開キー認証を混同しています。これらは2つの完全に異なるものです。これには最初にサーバーの公開鍵が関係し、後者にはアカウントの公開鍵が関係します。

    違いについては、SSH キー ペアについてお読みください

  2. FileZillaは、サーバーの公開ホスト キーも検証しないと接続できません。最初の接続では、常にキーを受け入れるように求められます。一度行うと、オプションでキーがキャッシュされ、キーが変更されない限り、再度プロンプトが表示されることはありません。

    FileZilla ホスト キーの検証

    おそらく、以前にこのプロンプトが表示されたこと、または他の誰かが以前にマシンからサーバーに接続したことを忘れている可能性があります。

    どの SSH (SFTP) クライアントも同じことを行う必要があります。サーバーのホスト キーを確認していない場合、セキュリティが失われます。

  3. サーバー管理者からホスト キーのフィンガープリントを取得する必要があります。

    そうでない場合は、WinSCPサーバーとプロトコル情報ダイアログで確認できます。

    詳細については、WinSCP の FAQ を参照してください。SSHホスト キーのフィンガープリントを取得してサーバーを承認するには?

于 2014-06-13T06:51:05.537 に答える
0

FileZilla クライアントに返された SSH キーを C# アプリにコピーするだけで、これを解決しました。これが正しいことかどうかはわかりませんが、少なくとも私のソリューションが機能するようになりました。

また、SSH-RSA 1024 ではなく SSH-DSS キー 2048 キーでもあったため、キーをいじっても失敗し続けたと思います。

于 2012-09-06T16:25:25.113 に答える