2017-02-24 20 views
0
私は(Renciによる) SSH.netライブラリからSSHClientとSCPClientのプロパティとの接続クラスがあるとし

SSH.net - SSH接続は動作しますが、SCPは、「不正なユーザ名とパスワードを」返す

public class SecureConn 
{ 
    public SshClient Ssh {get; set;} 
    public ScpClient Scp {get; set;} 

    public SecureConn(string host, string usr, string pwd) 
    { 
     this.Ssh = new SshClient(host, usr, pwd); 
     this.Scp = new ScpClient(host, usr, pwd); 
    } 

    ... 

} 

私がしようSSHでコマンドを実行する - すべて正常に動作します。しかし、this.Scp.Upload()(コンストラクターで同じ資格情報に注意してください)を使用してネットワーク共有からLinuxサーバーにファイルをアップロードしようとすると、「不正なユーザー名またはパスワード」が返されるSystem.IO.Exceptionが発生します。このエラーが発生する原因は何ですか?

SCPがWindows上で正常に動作するためのソフトウェアをインストールする必要はありますか?または、このメッセージを何らかの形で生成しているネットワーク共有ソースですか?多分LinuxサーバはSCPのために異なるパスワードを設定する必要がありますか?

私はWinSCPでチェックしたので、完璧に接続してファイルをコピーできます。

注:上記は単なるコードサンプルであり、実際のコードではありませんが、ワークフローは基本的に同じです。私はそれがエラーをスローするRenciのScpClient.Uploadメソッドであることについて肯定的なので、エラーを見つけるためにコードの外を探しています。

+0

SCPクライアントに障害がありますか?たぶん別のものを試してみませんか?あなたはC#のWinSCPと統合することができます、彼らは彼らのウェブサイト上にクライアントのlibを持っています。 (これを使用するには、winscpがインストールされている必要があります)。また、SSH経由のファイル転送にはさまざまなプロトコルがありますので、SFTP(SCPだけでなく)をサポートするクライアントを探しているかもしれません – caesay

+0

障害のあるSCPクライアントはどういう意味ですか?私の知る限り、SSH.netは、.NETのSSH/SCPで最も推奨されるライブラリの1つです。また、私はこれを変更することができません(私はこのコードの唯一のユーザーではありません)。 – Asunez

+0

sshを許可している間に、サーバがscpの認証に失敗する可能性を想像するのは難しいです。 scp接続は、クライアントが認証後にscpを実行するようにサーバに要求するssh接続です。認証中、サーバはクライアントがscpを実行することさえ知らない。あなたが含まれているコードは実際のコードではないと言います。問題を示すスタンドアロンプ​​ログラムにコードを縮小する必要があります。 – Kenster

答えて

0

明らかに原因はSSH.netライブラリではなく、ネットワーク共有にログインするための資格情報にありました。同じ問題を抱えている人には、Windowsでクレデンシャルを保存する(ログインプロンプトで「自分のユーザ名とパスワードを記憶」をチェックしてください)ネットワーク共有に問題が解決しました。 1回限りのアクセスはありません。おそらくドライブをマッピングすることもできますが、私はそれをチェックしていません。

関連する問題