3 votes

Comment puis-je utiliser l'authentification par clé publique pour SFTP dans ES File Explorer ?

Je veux utiliser SFTP pour transférer des fichiers d'Android vers une boîte Linux en utilisant l'authentification par clé publique plutôt qu'un nom d'utilisateur et un mot de passe traditionnels. Idéalement, je voudrais utiliser ES File Explorer (car je l'utilise pour tout le reste).

Quelqu'un peut-il me dire comment générer une paire de clés publiques/privées appropriée pour permettre à ES File Explorer de s'authentifier avec le serveur SFTP ?

  • Lorsque j'essaie de me connecter à un serveur SFTP en utilisant une clé privée, je peux sélectionner un fichier contenant la clé, mais lorsque je clique sur OK, j'obtiens le message "Error, cannot find the SFTP(mysite.com) server".
  • Je sais que ES File Explorer est capable d'utiliser SFTP car il fonctionnait lorsque j'utilisais l'authentification par mot de passe. Maintenant que j'ai désactivé les mots de passe sur le serveur, il signale "Login fails. Ceci peut être causé par : Auth fail", ce qui est à peu près ce à quoi je m'attendais.
  • Je sais que le téléphone Android a toujours une connexion au serveur SSH, car je peux m'y connecter en utilisant Connectbot avec une authentification par clé publique.
  • Je sais que SFTP fonctionne toujours via SSH, car je peux m'y connecter et transférer des fichiers en utilisant BitKinex sur un PC.
  • CLARIFICATION : Je n'exécute pas de pare-feu sur le téléphone Android.
  • CLARIFICATION : Lorsque le téléphone ne parvient pas à se connecter, le serveur SFTP consigne Received disconnect from my.ip.ad.dr: 3: com.jcraft.jsch.JSchException: Auth fail [preauth]

J'ai réussi à m'authentifier auprès du serveur en utilisant des clés de 2048 bits générées par PuTTY KeyGen, à la fois au format .ppk de PuTTY (dans PuTTY lui-même) et exportées au format OpenSSH (pour BitKinex). Ces clés n'ont pas fonctionné, pas plus que leur exportation au format SSH.com. J'ai aussi OpenSSH / OpenSSL disponible sur la boîte Linux comme alternative pour la génération de clés. Connectbot gère ses propres clés, mais ne semble pas être capable d'exporter la clé privée (option grisée).

Je suppose que le problème pourrait être soit que j'utilise le mauvais format de fichier de clé, soit que j'ai défini les mauvaises options sur la clé elle-même. Je n'ai pas trouvé d'instructions dans l'explorateur de fichiers ES. documentation ou sur Google.

Cela ne devrait pas faire de différence, mais j'utilise un Huawei Ascend P2 avec Android 4.1.2. Il n'est pas rooté (et je ne vais pas le faire). La boîte linux est un Raspberry Pi avec OpenSSH 6.0p1 Debian-4+deb7u2.

4voto

Crayon Points 356

Votre question m'a fait essayer d'utiliser la même configuration.

Solution

Générez votre paire de clés au format de fichier clé OpenSSH, j'ai utilisé mon poste de travail linux :

 ssh-keygen -t rsa -C "KEYNAME"

(J'ai laissé la phrase de passe vide mais je pense que cela fonctionnera aussi avec elle, ajoutez la clé publique à votre hôte :

 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(En supposant que c'est la même machine que celle à laquelle vous voulez vous connecter) Copiez la clé privée id_rsa sur votre téléphone et utilisez-la :)

J'ai trouvé l'indice sur Logcat :

 W/System.err(27250): com.jcraft.jsch.JSchException: invalid privatekey: /sdcard/key.ppk

et ceci réponse m'a amené dans la bonne direction.

Comment copier la clé privée de connectBot solution de contournement pour l'exportation

Seules les clés privées sans phrase de passe peuvent être copiées, vous pouvez donc changer le mot de passe et le définir vide, cette clé n'est PAS compatible avec ES File Explorer.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X