2017-04-16 3 views
1

J'ai une application console C# dans Visual Studio 2008 et .NET Framework 3.5.Connexion à SFTP avec le fichier de clé à l'aide de SSH.NET (Autorisation refusée (clé publique))

À des fins de test, j'ai installé un serveur FTP sur mon ordinateur local et je l'ai configuré. J'ai téléchargé et installé ce petit serveur FTP gratuit: freeFTPd. C'est vraiment facile, ça me prend environ 10 minutes. Une fois que je l'ai configuré, je me suis connecté avec succès à l'aide de la méthode d'Authentification par Mot de Passe en utilisant mon application console C#.

Maintenant, j'essaie de me connecter uniquement à mon serveur FTP local à l'aide d'un fichier basé uniquement sur les clés.

Ainsi, le code que je l'ai mis en œuvre est le suivant:

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 
} 

Comme vous pouvez le voir dans le code ci-dessus, j'utilise freeftpd.key comme clé privée. Ce fichier a été créé une fois que freeFTPd est installé. Pendant l'installation, freeFTPd m'a demandé de créer un nouveau fichier de clé privée, j'ai donc répondu 'oui'. Maintenant, je l'utilise mais le problème est que je peux me connecter à mon serveur local FTP en utilisant ce fichier de clé privée. J'ai ouvert ce fichier, et il commence par la ligne suivante:

----- BEGIN RSA PRIVATE KEY -----

et se termine par:

----- END RSA CLÉ PRIVÉE -----

En dessous d'eux, il y a un tas de données cryptées.

J'ai lu quelque part que ce fichier doit commencer par cette ligne.

De toute façon je ne peux pas me connecter à mon serveur FTP. Depuis le panneau de configuration freeFTPd, dans la section SFTP, je peux créer des clés RSA et DSA (512, 1024 ou 2048 bits de longueur). Ces fichiers sont générés comme RSAKey.cfg et DSAKey.cfg et leur contenu est similaire au fichier de clé privée 'freeftpd.key' généré lors du processus d'installation de freeFTPd. Si j'utilise RSAKey.cfg ou tout autre juste créé à partir de freeFTPd cela ne fonctionne pas. Le message d'erreur qui s'affiche est:

Permission denied (publickey). 

Alors qu'est-ce que je fais mal? Je n'ai aucune idée sur les certificats, les fichiers de clés privées ... Toute aide sera grandement appréciée.

Répondre

1

Je n'ai aucune expérience avec freeFTPd mais je me demande si la question est la même que celle ici: http://www.sitecorelessons.com/2014/03/how-to-upload-file-via-sftp-using.html

À partir du lien: « Note: -. Votre clé privée doit être compatible avec SshNet Pour convertir tout clé privée à clé privée compatible SshNet, référez-vous mon autre article Comment faire pour convertir clé privée à OpenSSH clé pour se connecter au serveur SFTP. "

0

Peut-être que ce que vous faites mal est de demander ici quand le site FreeFTPd a forums spécifiquement pour le type de question que vous posez. En dehors de ces forums, la meilleure façon de déboguer le type de client que vous utilisez est de l'essayer par rapport à une application de serveur populaire et bien supportée (comme SSHD sous Linux), assurez-vous que cela fonctionne, puis essayez contre le produit moins connu pour voir s'il y a des différences de comportement. Des implémentations telles que votre FreeFTPd référencé viennent un douzaine, et il est probablement moins sûr de supposer que les gens ici sauront quoi faire avec un tel produit.