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メソッドであることについて肯定的なので、エラーを見つけるためにコードの外を探しています。
SCPクライアントに障害がありますか?たぶん別のものを試してみませんか?あなたはC#のWinSCPと統合することができます、彼らは彼らのウェブサイト上にクライアントのlibを持っています。 (これを使用するには、winscpがインストールされている必要があります)。また、SSH経由のファイル転送にはさまざまなプロトコルがありますので、SFTP(SCPだけでなく)をサポートするクライアントを探しているかもしれません – caesay
障害のあるSCPクライアントはどういう意味ですか?私の知る限り、SSH.netは、.NETのSSH/SCPで最も推奨されるライブラリの1つです。また、私はこれを変更することができません(私はこのコードの唯一のユーザーではありません)。 – Asunez
sshを許可している間に、サーバがscpの認証に失敗する可能性を想像するのは難しいです。 scp接続は、クライアントが認証後にscpを実行するようにサーバに要求するssh接続です。認証中、サーバはクライアントがscpを実行することさえ知らない。あなたが含まれているコードは実際のコードではないと言います。問題を示すスタンドアロンプログラムにコードを縮小する必要があります。 – Kenster