Le serveur SSH Dropbear inclus dans l'image d'OpenWRT RC4 supporte l'authentification par clef. Il est donc très tentant et vivement conseillé de mettre en oeuvre cette fonctionnalité, ne serait-ce que parce qu'elle permet une gestion multi-utilisateurs assez souple.
Pour activer ce mode d'authentification, il suffit de créer un fichier authorized_keys dans le répertoire /etc/dropbear. Ce fichier servira de trousseau : la clef de chaque utilisateur autorisé y sera stockée. Dans l'exemple ci-dessous, la clef publique id_rsa.pub a été préalablement transférée sur le routeur dans le répertoire /tmp :
root@OpenWrt:~# ls /etc/dropbear/
dropbear_dss_host_key dropbear_rsa_host_key
root@OpenWrt:~# cd /etc/dropbear/
root@OpenWrt:/etc/dropbear# cat /tmp/id_rsa.pub >> authorized_keys
root@OpenWrt:/etc/dropbear# chmod 0600 authorized_keys
root@OpenWrt:/etc/dropbear#
bash-2.05a$ ssh root@192.168.1.1
Enter passphrase for key '/Users/mac/.ssh/id_rsa':
bash-2.05a$ ssh root@192.168.1.1
Enter passphrase for key '/Users/mac/.ssh/id_rsa':
Enter passphrase for key '/Users/mac/.ssh/id_rsa':
Enter passphrase for key '/Users/mac/.ssh/id_rsa':
root@192.168.1.1's password:
/usr/bin/dropbearkey
qui devient donc :
/usr/bin/dropbearkey -s
Rappel : le fichier /etc/init.d/S50dropbear est un lien symbolique vers /rom/etc/init.d/S50dropbear. Pour l'éditer, il faut donc d'abord remplacer ce lien par un “vrai” fichier. Une copie du fichier /rom/etc/init.d/S50dropbear dans /etc/init.d fera très bien l'affaire.
Après avoir relancé le serveur (ou rebooter le routeur), on peut constater que seul l'authentification par clef est désormais supportée :
bash-2.05a$ ssh root@192.168.1.1
Enter passphrase for key '/Users/mac/.ssh/id_rsa':
Permission denied (publickey).