Le serveur dropbear ssh na pas ' me laisser me connecter

Jessaye dobtenir un accès ssh à mon routeur. Actuellement, je nai quun accès telnet et jai installé dropbear et je suis en cours dexécution (en utilisant opkg sur un lecteur USB connecté au routeur).

Depuis le début, ce que jai fait a été de générer une clé privée et de la déchiffrer (depuis dropbear ne le prend pas encore en charge) et le public:

cd .ssh openssl genrsa -des3 -out id_rsa openssl rsa -in id_rsa -out id_rsa ssh-keygen -y -f id_rsa > authorized_keys 

Jai téléchargé la clé publique (authorized_keys ) à /root/.ssh. Jai mis le fichier sur un serveur Apache (sur mon ordinateur local) et je le télécharge sur le routeur en utilisant wget (le fichier téléchargé devient root en tant que propriétaire / groupe) puis jai changé les autorisations en 0600 (même chose pour le client mais avec mon utilisateur ).

Lorsque jessaie daccéder, cela me donne une erreur « Autorisation refusée (publickey) »:

$ ssh -v -i ~/.ssh/id_rsa [email protected] OpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to 192.168.1.1 [192.168.1.1] port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/chazy/.ssh/id_rsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/chazy/.ssh/id_rsa-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_7.4 debug1: Remote protocol version 2.0, remote software version dropbear debug1: no match: dropbear debug1: Authenticating to 192.168.1.1:22 as "root" debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: [email protected] debug1: kex: host key algorithm: ssh-rsa debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha1 compression: none debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha1 compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ssh-rsa SHA256:1EFA75uwLp+4hBW0t3aaY05QjLzYd4jjDWoULAzF/8o debug1: Host "192.168.1.1" is known and matches the RSA host key. debug1: Found key in /home/chazy/.ssh/known_hosts:1 debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: /home/chazy/.ssh/id_rsa debug1: Authentications that can continue: publickey debug1: No more authentication methods to try. Permission denied (publickey). 

Sauf si je  » m mauvaise lecture de ce que dit la documentation ( GitHub repo ):

Authentification de la clé publique du serveur :

Vous pouvez utiliser ~ / .ssh / allowed_keys de la même manière quavec OpenSSH, mettez simplement les entrées clés dans ce fichier. Elles doivent être de la forme:

ssh- rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV + ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk / yU99UVv6NWV / 5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET / MG8qyskG / 2IE2DPNIaJ3Wy + Ws4IZEgdJgPlTYUBWWtCWOGc = quelquun @ nom dhôte

Vous devez vous assurer que ~ / .ssh et le fichier clé, sont modifiables uniquement par lutilisateur. Méfiez-vous des éditeurs qui a fendu la clé en plusieurs lignes.

Dropbear prend en charge certaines options pour les entrées authorized_keys, voir la page de manuel.

Jai fait tout ce quil dit, donc je Je ne sais pas où le problème pourrait être.

La documentation mentionne une autre manière:

Authentification de la clé publique du client:

Dropbear peut faire lauthentification par clé publique en tant que client, mais vous devrez convertir les clés de style OpenSSH au format Dropbear, ou utiliser dropbearkey pour les créer.

Si vous avez une clé privée de style OpenSSH ~ / .ssh / id_rsa, vous devez faire:

dropbearconvert openssh dropbear ~ / .ssh / id_rsa ~ / .ssh / id_rsa.db dbclient -i ~ / .ssh / id_rsa.db

Dropbear ne prend pas en charge les clés dhôte cryptées mais peut se connecter à ssh-agent.

Donc, cela signifie que si je convertis la clé privée en dropbear clé privée, je peux utiliser le client dropbear pour me connecter au serveur dropbear:

dropbearconvert openssh dropbear id_rsa id_rsa.db 

Je vais essayer et voir si cela fonctionne. Mais de toute façon, lauthentification par clé publique du serveur devrait fonctionner.

Commentaires

  • Le serveur / config de dropbear ssh permet-il la connexion root? Par défaut sur plusieurs serveurs ssh, la connexion root est interdite pour la sécurité.
  • Je pense que oui, je ne ‘ voir aucun fichier de configuration dans opt/etc/dropbear (uniquement les clés de lhôte), et le paramètre pour linterdire est -w (ne lutilise pas).
  • Question modifiée: a suivi les étapes pour convertir la clé ssh en dropbear clé et rien (comme indiqué par Ipor Sircer à partir de la première réponse).
  • Documentation trouvée dans le dépôt github (peut ‘ t signaler ici, les problèmes ne sont pas activés) . Question modifiée à nouveau. Même problème encore 🙁

Réponse

Réponse courte: vous utilisez probablement OpenWrt, et vous devez mettre votre clé publique dans /etc/dropbear/authorized_keys au lieu de /root/.ssh/authorized_keys.

Réponse longue:

Le GitHub le dépôt sur lequel vous pointez est celui mis à jour par lauteur de dropbear; il indique que ~/.ssh/authorized_keys fonctionne, et selon GitHub, cela fait au moins 14 ans. En regardant le code dans svr-authpubkey.c il ajoute /.ssh/authorized_keys au « pw_dir ».

I, cependant , a eu le même problème que vous, et jai découvert que le binaire fourni dans OpenWrt 18.06.1 est en fait en train douvrir /etc/dropbear/authorized_keys. Utiliser ce fichier fonctionne pour moi .

Ce comportement est documenté dans la documentation OpenWrt .

Alors comment se fait-il?

Étant donné que le code ci-dessus ne peut pas produire ce nom de fichier seul (le .ssh est manquant) et il ny a aucun lien symbolique .ssh nimporte où, jai exécuté strings sur le binaire. Cela a montré que /etc/dropbear/authorized_keys est mentionné explicitement, juste avant le %s/.ssh/authorized_keys que lon peut attendre du code GitHub. Je conclus que le binaire OpenWrt nest pas compilé à partir des mêmes sources … et en effet, OpenWrt corrige le code en amont avec ce correctif . Cela change le fichier utilisé en /etc/dropbear/authorized_keys si (et seulement si) lutilisateur cible est root.

Puisque vous mentionnez opkg, jimagine que vous utilisez également OpenWrt, et que cest votre problème. Jai ajouté une balise OpenWrt à votre question.

Réponse

authorized_keys est un fichier, pas un répertoire.

Un exemple de fichier authorized_keys:

 # Comments allowed at start of line ssh-rsa AAAAB3Nza...LiPk== [email protected] from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== [email protected] 

http://man.he.net/man5/authorized_keys

Aussi le .ssh/ et tous les fichiers quil contient doivent être détenus et lisibles uniquement par lutilisateur, dans ce cas root.

Commentaires

  • Je viens de corriger ça mais toujours pas de chance 🙁 (voir question mise à jour).

Réponse

man dropbearkeys:

NOTES The program dropbearconvert(1) can be used to convert between Dropbear and OpenSSH key formats. Dropbear does not support encrypted keys. EXAMPLE generate a host-key: # dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key extract a public key suitable for authorized_keys from private key: # dropbearkey -y -f id_rsa | grep "^ssh-rsa " >> authorized_keys 

Commentaires

  • Jai réussi à convertir la clé privée, mais toujours pas de chance 🙁 (voir question mise à jour).

Réponse

Vous devez créer une clé ssh à laide de loutil dropbearkey. RSA_KEYFILE = / etc / dropbear / dropbear_rsa_host_key DSS_KEYFILE = / etc / dropbear / dropbear_dss_host_key

dropbearkey -t dss -f $ DSS_KEYFILE

dropbearkey -t rsa -f $ RSA_KEYFILE

Redémarrez ensuite le démon dropbear. Essayez ensuite de vous connecter, cela devrait fonctionner.

Réponse

Quelques pointeurs qui peuvent vous aider à vous connecter en utilisant PKI avec Dropbear, ceci a testé un conteneur basé sur les packages Alpine Linux 3.12, se connectant depuis un client OpenSSH.

  1. Lutilisateur a besoin dun shell.
  2. Lutilisateur ne besoin dun mot de passe de connexion.
  3. Lutilisateur « s ~ ne doit pas être inscriptible dans le groupe / monde (ie chmod 755 au moins; vous devriez utiliser 700 pour les répertoires personnels).
  4. Lutilisateur « s ~/.ssh et ~/.ssh/authorized_keys doit être accessible uniquement par le propriétaire (par exemple, 700 sur le répertoire et 600 sur le fichier).
  5. Il doit être un répertoire /tmp inscriptible
  6. Les entrées authorized_keys sont au même format que celui utilisé par OpenSSH.

Je crée des conteneurs en utilisant des fichiers sélectionnés à partir de packages alpins; Jai une image denviron 2 Mo dans laquelle je peux effectuer un ssh tant que toutes les conditions ci-dessus sont remplies.

Réponse

I je suis tombé sur cette question en cherchant les raisons pour lesquelles la connexion via dropbear à mon serveur a cessé de fonctionner tout dun coup (cela fonctionne depuis des mois mais nest utilisée quoccasionnellement toutes les deux semaines).

la solution / explication i finalement trouvé était dans le message debug1: send_pubkey_test: no mutual signature algorithm avec une verbosité accrue sur la tentative de connexion ssh de mes clients, ce qui ma conduit à un article de dépannage de bitbucket .

cet article mentionne Lalgorithme RSA est rapidement obsolète sur les systèmes dexploitation et les clients SSH en raison de diverses vulnérabilités de sécurité […] comme cause et énumère comme solutions de contournement possibles soit:

  • en ajoutant PubkeyAcceptedKeyTypes +ssh-rsa au fichier cfg du client (utilisez-le uniquement comme solution de contournement temporaire car cest pote non sécurisé!)

  • utilise lalgorithme / les clés ECDSA ou ED25519. maintenant avec la version dropbear présente sur mon système, je ne pouvais que utiliser ECDSA car ED25519 ma donné des erreurs d algorithme inconnu côté dropbears.

Jespère que cela aidera quelquun à trébucher sur cette question, car je lai fait même si ce nest probablement pas une solution à la question dorigine, pls. pardonne.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *