Comment s'authentifier sur Ubuntu à partir d'une clé USB ou d'un téléphone

Voici un courte description sur comment configurer Ubuntu et une clé USB (et par extension un téléphone vous donnant accès à un stockage USB) afin de pouvoir vous authentifier sur Ubuntu.

Vous pouvez utiliser ce fonctionnement pour plus de simplicité. Lorsque vous brancher votre téléphone à votre ordinateur il se connecte, lorsque vous le déconnectez l'écran de veille s'affiche et ce sans devoir saisir un mot de passe.

Il est aussi possible pour mettre en place une authentification forte, via les deux facteurs d'authentification (téléphone ET saisie d'un mot de passe). Ce second cas, plus risqué car il est possible bloquer sa connexion, ne sera pas traité dans ce tutoriel mais facilement extrapolable.

  • Disposer d'une connexion à Internet configurée et activée.
  • Disposer d'une clé USB ou d'un téléphone permettant le stockage USB.

Avant Ubuntu 16.04

Il vous suffit, pour cela, d'installer le paquet libpam-usb.

À partir d'Ubuntu 16.04

Le paquet précédent ne se trouve malheureusement plus dans les dépôts officiels, il faut donc les télécharger manuellement, 3 paquets sont necéssaires. Téléchargez donc et installez pour les architectures 64 bits :

Pour les architectures 32 bits :

Déclarer votre périphérique (clé USB, téléphone) auprès de PAM

Ce mécanisme étant basé sur la détection automatique des périphériques de stockage USB, nous vous conseillons de laisser brancher que celui que vous souhaitez configurer. Dans le cas contraire, un choix vous sera proposé.

sudo pamusb-conf --add-device un_nom_a_votre_convenance

Pamusb-conf va lister les périphériques USB montés sur l'ordinateur, dans le cas où il n'y en a qu'un il vous le proposera d'office, il suffira donc de taper Y et entrée :

Please select the device you wish to add.
* Using "Key File-CD Gadget (0123456789ABCDEF)" (only option)
 
Which volume would you like to use for storing data ?
* Using "/dev/sdb1 (UUID: C099-1AA8)" (only option)
 
Name		: un_nom_a_votre_convenance
Vendor		: KeyVendor
Model		: File-CD Gadget
Serial		: 0123456789ABCDEF
UUID		: C099-1AA8
 
Save to /etc/pamusb.conf ?
[Y/n]

Dans le cas où il y en a plusieurs il les liste et leur attribue un numéro, à vous de choisir celui que vous voulez. Laissez le terminal ouvert. Il est préférable de n'avoir que la clé USB voulue de connectée pour éviter toute confusion au moment de cette manipulation.

Pour ceux qui tentent d'utiliser une SD card plutôt qu'une clé USB, le périphérique est appelé mmcblk0 ou équivalent

Déclarer un utilisateur auprès de PAM

sudo pamusb-conf --add-user nom_d_utilisateur

"nom_d_utilisateur" est à remplacer par le nom d'utilisateur de votre PC.

Which device would you like to use for authentication ?
* Using "un_nom_a_votre_convenance" (only option)
 
User		: votre_login
Device		: un_nom_a_votre_convenance
 
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.

Tester votre configuration

Nous allons simuler l'authentification d'un utilisateur pour voir si cela fonctionne, tapez dans le terminal :

pamusb-check nom_d_utilisateur

Si vous avez pour résultat :

* Pad checking failed !
* Access denied.

Faites un peu de ménage avec :

rm ~/.pamusb/*

Vous pouvez aussi débranchez puis rebranchez votre périphérique.

Lorsque c'est bon, vous pouvez insérer dans le terminal :

su nom_d_utilisateur

et oh magie, vous n'avez plus votre mot de passe à insérer :-)

(Dé)verrouiller automatiquement votre écran de veille lorsque vous (dé)branchez votre téléphone

PAM permet de détecter la connexion de votre périphérique. Nous avons en profiter pour verrouiller l'écran de veille lorsque le téléphone est débrancher et le déverrouiller lorsqu'il est branché.

Editez avec les droits d'administration le fichier /etc/pamusb.conf et insérer les lignes :

<agent event="lock">gnome-screensaver-command -l</agent>
<agent event="unlock">gnome-screensaver-command -d</agent>

entre les balises </device> (au singulier) et </user> (au singulier aussi) concernant votre périphérique et votre utilisateur. Les deux commandes précédentes ayant complété ce fichier automatiquement.

Puis pour détecter les (dé)branchements de votre périphérique il suffit d’exécuter (dans préférence dans un autre terminal afin d'avoir la trace) :

$ pamusb-agent

Il ne reste plus qu'à débrancher la clé USB / le téléphone pour s'apercevoir que, oh miracle, l'écran de veille se verrouille. Et le rebrancher pour s'apercevoir que oh miracle… il ne se passe rien.

En effet, sous la 14.04, la commande "gnome-screensaver-command -d" ne fonctionne pas par défaut, il faut configurer l'écran de veille grâce à :
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true

Ne reste plus qu'à automatiser le démarrage de pamusb-agent, pour se faire aller dans "Applications au démarrage" et ajouter une entrée ayant pour commande "pamusb-agent".

A priori il est possible de réaliser la même action avec le Bluetooth.

La configuration par défaut vous permet de vous authentifier soit avec le mot de passe soit avec la clé USB. Pour mettre en place une authentification forte avec le mot de passe ET la clé, nous vous conseillons de lire cette documentation. SI ce n'est que le fichier à configurer sous Ubuntu 14.04 est : /etc/pam.d/common-auth

Attention cette manipulation peut se révéler dangereuse. En cas de mauvaise manipulation, il faudra redémarrer avec sous un live-CD pour remettre le paramètre initial.
  • tutoriel/authentification_usb.txt
  • Dernière modification: Le 11/09/2022, 12:24
  • par moths-art