2013-03-11 1 views
0

저는 sftp에 익숙하지 않고 sftp를 통해 원격 제어 서버에 파일을 보내려는 C# 프로그램을 얻으려고합니다. 나는 "나쁜 패킷 길이"예외가 발생ssh.net sftp 잘못된 패킷 길이/열린 SSH 버전 2 RSA?

using (var sftp = new SftpClient(FTPAddress, FTPName, FTPPassword)) 
        { 
         ConnectionInfo myCI = sftp.ConnectionInfo; 

         sftp.Connect(); // <<<< Exception on connect 

         sftp.UploadFile(sftp_ms, FileName,true); 

         sftp.Disconnect(); 
        } 

: 같은

사용하여 코드.

Google 검색을 통해 잘못된 패킷 길이가 암호화 형식이 일치하지 않을 가능성이 있지만 그 문제를 해결할 방법을 모르겠습니다.

내가 클라이언트로부터받은 사양은 다음과 같습니다

Keys must be in Open SSH version 2 format RSA format 

나는이 작업을 수행하는 방법을 모르겠어요. 이전 SO 질문 How to resolve a 'Bad packet length' error in SSH.NET?에는 sshnet.codeplex 토론에 대한 링크가 있습니다.이 토론에서는 해당 포스터에 대한 문제를 해결하지 않으려는 암호화 키를 제거합니다.

ssh.net의 connectioninfo 클래스에서 16 개의 항목을 볼 수 있지만 그 중 하나는 공개적으로 SSH 버전 2 RSA를 사용하고 있지는 않습니다 (검색 중).

필자는 ipz, name 및 password를 사용해 보았습니다. filezilla와 함께 제공되었으므로 아무런 문제가 없습니다. 그래서 filezilla는 어떻게 든 올바른 암호화를 사용합니다; 나는 그것이 무엇을 사용하는지 말할 방법을 모른다.

도움 말?

앤드류

+0

무엇 FTPPassword 유형입니까? 그것은 ctor에 대해 잘못된 과부하를 사용하고있을 수 있습니다. 또한 원격 서버가 공개 키 인증이 아닌 사용자 이름/비밀번호 인증을 수락합니까? –

+0

모든 문자열; 그러나 그것이 과부하 문제라면 연결이 아니라 건설에 오류가 있습니까? 원격 서버의 경우 IP, 사용자 이름 및 암호를 filezilla에 넣으면 연결이 성공하고 파일을 전송할 수 있습니다. – andrew

답변

0

여기서 두 가지 문제가 있습니다. 잘못된 패킷 길이 문제가 발생하는 경우 협상을 해결하려면 ssh.net Codeplex 토론 가이드를 따라야 할 것입니다. 이렇게하면 초기 연결 설정이 해결됩니다.

연결에 ssh 개인 키를 사용해야하는 경우 PrivateKey 개체의 배열을 사용하는 생성자 중 하나를 사용해야합니다. 특정의 PrivateKey의 생성자 중 하나는 스트림을 받아, 같은 당신이 코드를 사용하여 스트림에 개인 키 문자열을 변환 할 수 있습니다

var privKey = new PrivateKey(new MemoryStream(Encoding.ASCII.getBytes(sshPrivateKeyString))); 
var sftpclient = new SftpClient(FTPAddress, FTPName, new PrivateKeyFile[] { privKey }); 

다른 메커니즘이 명시 적 PrivateKeyConnectionInfo 인스턴스를 사용할 수 있습니다

var privKey = new PrivateKey(new MemoryStream(Encoding.ASCII.getBytes(sshPrivateKeyString))); 
var privConnInfo = new PrivateKeyConnectionInfo(FTPAddress, FTPName, privKey); 
var sftpClient = new SftpClient(privConnInfo); 
+0

늦게 답변드립니다. 죄송합니다. 미래의 검색 사용자를위한 추가 정보 : 사용자 이름/비밀번호로 sftp를 사용하면 이해할 수있는 것부터 인증이 사용자/패스이므로 공개/개인 키가 필요하지 않습니다. 사용자/암호 로그온이없는 곳에서 공용/개인이 필요합니다. 나는 틀린 양쪽 모두를하려고 노력하고 있었다. – andrew