
Note : Cet article s’adresse à qui se sert déjà de SSH. Pour découvrir foodjis sur Android, commencez par l’article qui le présente .
Votre clé de sécurité ouvre désormais vos sessions SSH depuis le téléphone.
Depuis la version 1.3, foodjis peut servir d’agent SSH pour les autres
applications Android. Ainsi, ssh, scp ou git, dans l’application
Termux
, s’authentifient avec la clé d’authentification
de votre identité PGP ID — celle que porte et sécurise votre clé physique,
YubiKey ou NitroKey.
Démonstration, avec une clé de sécurité configurée par foodjis (PGP ID) :
D’ordinaire, ce qui vous fait reconnaître d’un serveur SSH est une clé privée rangée dans un fichier de l’appareil : qui copie ce fichier peut se connecter à votre place, et le téléphone n’est pas un coffre-fort numérique. Des ingénieurs qui l’ont conçu aux pirates qui en exploitent discrètement les failles, jusqu’aux États qui préfèrent espionner leurs citoyens plutôt que les protéger, nombreux sont ceux qui violent régulièrement l’intimité et les secrets que vous lui confiez. Souvenez-vous par exemple du logiciel Pegasus .
Les clés de sécurité PGP ID , elles, sont de vrais coffres-forts : leur surface d’attaque est infiniment plus petite, et les secrets qu’on y a placés n’en ressortent pas.
Ce sont des coffres qui contiennent des clés, lesquelles ouvrent d’autres coffres que vous pouvez ranger ailleurs, par exemple sur votre téléphone. Quand ce coffre est fermé, aucun ingénieur de Google ni aucun pirate ne peut l’ouvrir. Pour l’ouvrir, il faut la clé de sécurité : celle que vous présentez au lecteur NFC de votre ordiphone comme au port USB de votre ordinateur.
~/.ssh/authorized_keys — que foodjis, comme gpg --export-ssh-key sur
l’ordinateur, vous donne à copier.Dans la Configuration de foodjis, activez « Faciliter aux autres applications l’utilisation de vos clés de sécurité pour l’authentification SSH », puis ouvrez En savoir plus. Sans cela, foodjis vous demandera à chaque connexion s’il doit prêter vos clés « pour cette fois ».
Copiez la ligne de votre clé publique et ajoutez-la sur vos serveurs, comme n’importe quelle clé SSH. Elle se termine par votre EID et l’empreinte de la clé OpenPGP d’où elle vient : vous saurez toujours d’où elle sort.
Toujours sur cette page, Installer sshwfoodjis dans Termux. foodjis
confie à Termux le paquet sshwfoodjis_*.deb, et place la
commande d’installation dans le presse-papier : ouvrez le répertoire que
Termux propose, et collez.
Dans Termux, une fois pour toutes :
sshwfoodjis --install
Dans tout nouveau terminal, ssh, scp ou git demandent désormais la
clé à foodjis, sans autre réglage. sshwfoodjis --uninstall défait cette
configuration, et désinstaller le paquet la défait aussi. Pour une seule
connexion, sans rien installer : sshwfoodjis moi@mon-serveur.org.
ssh moi@mon-serveur.org
git clone moi@mon-serveur.org:mon-depot.git
À chaque connexion, foodjis propose vos clés au serveur. Un serveur qui ne connaît pas votre clé passe à ses autres méthodes, sans rien vous demander. Quand il l’accepte, foodjis apparaît par-dessus Termux, pour demander au besoin votre code PIN, puis surtout : « Présentez votre clé de sécurité ». Vous approchez la clé de sécurité, la porte s’ouvre — « Vous pouvez éloigner la clé de sécurité » — et la session commence.
Le code PIN reste en mémoire le temps que vous avez choisi dans la
Configuration (15 minutes par défaut) : les connexions suivantes ne demandent
que la clé. Un scp ou un git clone ne demandent pas plus qu’une session :
nous avons cloné en SSH depuis nos serveurs, depuis Codeberg et depuis GitHub.
Pour voir ce qui se passe, l’option -v de ssh suffit : sshwfoodjis y
ajoute sa version, et quelle application foodjis il a réveillée.
Aujourd’hui, l’outil gpg de Termux ne sait pas encore parler à foodjis pour
utiliser votre clé de sécurité PGP ID. Mais git sait aussi signer ses commits
avec une clé SSH, et depuis la version 1.3.3, foodjis les signe : la fenêtre de
la clé de sécurité dit alors « Signature d’un commit git ». Il ne signe que des
connexions SSH et des commits git, pour qu’une autre application ne puisse pas
lui faire signer autre chose.
Dans Termux, une fois pour toutes (après sshwfoodjis --install, dans un
nouveau terminal) :
git config --global user.email moi@exemple.org
git config --global gpg.format ssh
git config --global user.signingkey "key::$(ssh-add -L | head -n 1)"
git config --global commit.gpgsign true
echo "$(git config user.email) namespaces=\"git\" $(ssh-add -L | head -n 1)" >> ~/.ssh/allowed_signers
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
Puis, comme d’habitude :
git commit -m "Mon premier commit signé par ma clé de sécurité"
git log --show-signature -1
foodjis demande la clé, et git log répond Good "git" signature for moi@exemple.org. Les deux dernières lignes de la configuration ne servent qu’à
cette vérification : git veut savoir quelle clé a le droit de signer pour
quelle adresse.