SFTP Verbindung mit Renci.SshNet und Key File

(C) 107er BLOG

Kurze Anleitung wie in C# mit Renci.SshNet eine SFTP Verbindung mittels Key File hergestellt werden kann und eine Lösung des Fehlers „Invalid private key file“

Allgemein

Um eine SFTP Verbindung mit Renci.SshNet und einem KeyFile herzustellen, kann wie folgt vorgegangen werden:

string host = ConfigurationManager.AppSettings["SFTP.Server"];
string username = ConfigurationManager.AppSettings["SFTP.Username"];
string password = ConfigurationManager.AppSettings["SFTP.Password"];
int port = Convert.ToInt32(ConfigurationManager.AppSettings["SFTP.Port"]);
string remoteDirectory = ConfigurationManager.AppSettings["SFTP.Server.FolderName"];
string keyFile = ConfigurationManager.AppSettings["SFTP.KeyFile"];
string keyFilePassPhrase = ConfigurationManager.AppSettings["SFTP.KeyFile.PassPhrase"];


var keyFiles = new[] { new PrivateKeyFile(keyFile, keyFilePassPhrase) };
var methods = new List<AuthenticationMethod>();
methods.Add(new PrivateKeyAuthenticationMethod(userName, keyFiles));
var conInfo = new ConnectionInfo(host, port, userName, methods.ToArray());
var sftpClient = new SftpClient(conInfo);
sftpClient.Connect();

Fehlermeldung: Renci.SshNet.Common.SshException: ‚Invalid private key file.‘

Renci.SshNet erlaubt nur RSA, DSA Private Key Files im OpenSSH oder ssh.com Format.
Der Dateiaufbau muss ähnlich diesem gekürzten und ungültigem Beispiel aussehen:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,25136DC257291XXX

kYdAPl36kkPYO6XNhZvM6v9dtD80BpwarKXLZOw/u+Mka/dukTMhK0H0II0cejh4
j6XFn9WmEPjm54S181qc+NtcWg3/ypNBUKcWMGDmFxZN0iwT++qDxkwk4uAWyCbW
kYdAPl36kkPYO6XNhZvM6v9dtD80BpwarZZLZOw/u+Mka/dukTMhK0H0II0cejh4
j6XFn9WmEPjm54S181qc+NtcWg3/ypNBUKcWMGDmFxZN0iwTaaqDxkwk4uAWyCbW
kYdAPl36kkPYO6XNhZvM6v9dtD80BpwarKXLZOw/u+Mka/dukTMhK0H0II0cejh4
j6XFn9WmEPjm54S181qc+NtcWg3/ypNBUKcWMGDmFxZN0iwTxxqDxkwk4uAWyCbW
kYdAPl36kkPYO6XNhZvM6v9dtD80BpwarKXLZOw/u+Mka/dukTMhK0H0II0cejh4
j6XFn9WmEPjm54S181qc+NtcWg3/ypNBUKcWMGDmFxZN0iwT++qDxkwk4uAWyCbW
kYdAPl36kkPYO6XNhZvM6v9dtD80BpwarKXLZOw/u+Mka/dukTMhK0H0II0cejh4
j6XFn9WmEPjm54S181qc+NtcWg3/ypNBUKcWMGDmFxZN0iwT++qDxkwk4uAWyCbW

-----END RSA PRIVATE KEY-----

Handelt es sich hingegen um ein Putty PPK File, ähnlich diesem gekürzten und ungültigem Beispiel, dann muss die Datei umkonvertiert werden:

PuTTY-User-Key-File-2: ssh-rsa
Encryption: aes256-cbc
Comment: Mein_Kommentar
Public-Lines: 12
3ElxFaALJEnNv1LDz8VkBkxCgFLuAolMlvoHvNh3V0rLgCr+2BspsXhqjo1+yL15
WQzrNSfhlKnYYDLNk2iWVqVmJPaFSWLdGpMrIcE+DkRMIobvnmULC02h0+gfDW0H
meTwhUc=
3ElxFaALJEnNv1LDz8VkBkxCgFLuAolMlvoHvNh3V0rLgCr+2BspsXhqjo1+yL15
WQzrNSfhlKnYYDLNk2iWVqVmJPaFSWLdGpMrIcE+DkRMIobvnmULC02h0+gfDW0H
Private-Lines: 28
QBVb5fiFq8dUhds/H6E9Ss6OvXLyCEGBpT/OxLmnizYme1mkxHEsOOQsTFkjoO5x
Ol6XbEHXUXlSVuzuOAfkIJspp4VbmHE47Ewj2FHJFeJLFnVGwkwsunoMQsreGzLp
mfC17Ry9SDrrzZ8yakcldnbgnskoHKqWd0ESmw5o36z+orLzZy/s3PX4znbO7cQh
1mQ13GyrP48dEqeQYx/39Q==
Private-MAC: ddaabb391cec7a9bb99994af666f8f106ffffce3

Mit Hilfe von WinSCP und Putty, kann das File ganz einfach umkonvertieren werden. In WinSCP sind dazu nur folgende Schritte nötig:

  1. WinSCP öffnen
  2. Werkzeuge > PuTTY Gen öffnen
  3. Load – Button > File auswählen
  4. Coverversion >Export Open SSH Key
  5. Speichern

Das erzeugte File kann dann in Renci.SshNet verwendet werden!

Quellen

 

Alle Angaben ohne Gewähr

 

Einen Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


97 − = 96