Visual Studio 2008 및 .NET Framework 3.5에 C# 콘솔 응용 프로그램이 있습니다.SSH.NET을 사용하여 키 파일로 SFTP에 연결 (권한 거부 (공개 키))
테스트 목적으로 로컬 컴퓨터에 FTP 서버를 설치하고 구성했습니다. 이 무료 소형 FTP 서버를 다운로드하여 설치했습니다 : freeFTPd. 정말 쉽습니다. 약 10 분이 소요됩니다.
구성한 후에는 C# 콘솔 응용 프로그램을 사용하여 PasswordA 인증 방법을 사용하여 성공적으로 연결했습니다.
이제 키 기반 파일 만 사용하여 로컬 FTP 서버에 연결하려고합니다. 당신이 위의 코드에서 볼 수 있듯이, 나는 개인 키 파일로
var keyFile = new PrivateKeyFile(@"C:\Program Files (x86)\freeFTPd\freeftpd.key");
var keyFiles = new[] { keyFile };
var methods = new List<AuthenticationMethod>();
methods.Add(new PrivateKeyAuthenticationMethod(username, keyFiles));
var con = new ConnectionInfo(host, port, username, methods.ToArray());
using (SftpClient client = new SftpClient(con))
{
client.Connect();
// Do some stuff below
}
freeftpd.key 사용하고 있습니다 :
그래서 내가 구현 한 코드는 다음과 같다. 이 파일은 freeFTPd가 설치되면 생성되었습니다. 설치하는 동안 freeFTPd는 새로운 개인 키 파일을 만들 것을 요청 했으므로 '예'라고 대답했습니다. 지금은 사용하고 있지만 문제는이 개인 키 파일을 사용하여 FTP 로컬 서버에 연결할 수 있다는 것입니다. 나는이 파일을 열어, 그것은 다음 행으로 시작 :----- BEGIN RSA PRIVATE KEY -----
와 함께 종료 :
----- END RSA 개인 키 -----
아래에는 암호화 된 데이터가 있습니다.
나는이 파일이이 줄로 시작해야한다는 것을 읽었습니다.
어쨌든 내 FTP 서버에 연결할 수 없습니다.
freeFTPd 제어판에서 SFTP 섹션에서 RSA 및 DSA 키 (길이가 512, 1024 또는 2048 비트)를 만들 수 있습니다. 이 파일은 RSAKey.cfg 및 DSAKey.cfg로 생성되며 freeFTPd 설치 프로세스 중에 생성 된 개인 키 파일 'freeftpd.key'와 유사합니다. 내가 RSAKey.cfg를 사용하거나 freeFTPd에서 생성 된 RSAKey.cfg를 사용하면 작동하지 않습니다. 표시되는 오류 메시지는 다음과 같습니다.
Permission denied (publickey).
그래서 내가 뭘 잘못하고 있니? 인증서, 개인 키 파일에 대해 잘 모르겠다 ... 어떤 도움을 주시면 감사하겠습니다.