cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu

Si vous utiliser une application sur votre téléphone qui se connecte à une machine en utilisant le protocole ssh, en général vous aurez la possibilité de vous identifier en utilisant un mot de passe mais en également en utilisant une clé ssh.

Vous serez sans doute tentĂ©s d’utiliser votre pair de clĂ©s que vous avez probablement dĂ©jĂ  sur votre ordinateur personnel.

Pour des raisons de sĂ©curitĂ© ce n’est pas une bonne idĂ©e: si vous perdez votre tĂ©lĂ©phone, votre clĂ© privĂ©e pourrait ĂȘtre compromise.

Je vais m’appuyer sur deux applications Android utilisant le protocole ssh.


ඏ

  • ConnectBot

    ConnectBot

    ConnectBot est un client Secure Shell pour Android qui vous permet de vous connecter à des serveurs distants via une liaison sécurisée.

    ConnectBot est un client ssh et telnet, et un émulateur de terminal pour le shell local. Supporte sessions multiples, y compris leur exécution simultanée.

    ConnectBot est assez basique, mais il offre la possibilitĂ© de crĂ©er la paire de clĂ©. L’application garde la clĂ© privĂ©e secrĂšte et vous donne la possibilitĂ© d’exporter la clĂ© publique. Cette fonctionnalitĂ© peut sembler ĂȘtre un gadget, mais elle incite l’utilisateur Ă  gĂ©nĂ©rer correctement la sĂ©curitĂ©.

    Vous n’aurez alors qu’à importer la clĂ© publique vers les machines que vous souhaitez contrĂŽler.

  • Raspi Check

    Raspi Check

    Raspi Check permet de voir l’état actuel du systĂšme d’un ordinateur Raspberry Pi. Pour cela, RasPi Check utilise une connexion ssh.

    RasPi Check vous montre des informations sur l’overclocking (frĂ©quence, tempĂ©rature, volts) et d’autres informations systĂšme (mĂ©moire libre, temps d’exĂ©cution, Ă©tat du disque).

    Vous pouvez Ă©galement redĂ©marrer ou arrĂȘter votre Raspberry Pi et envoyer des commandes personnalisĂ©es ! Si vous voulez toujours garder un Ɠil sur votre Pi, il y a aussi un widget pour votre Ă©cran d’accueil.

    Tout ce dont vous avez besoin pour que l’application fonctionne, ce sont vos identifiants de connexion ssh. Vous pouvez soit vous authentifier par mot de passe ou par clĂ© privĂ©e/publique.


ඏ

Générer une paire de clés spécifique :

Depuis une machine Linux, vous gĂ©nĂ©rerez votre paire de clĂ© Ă  l’aide de ssh-keygen, la syntaxe est la suivante :

ssh-keygen -P '' -b 4096 -f my-key-pair -m PEM -t rsa -C 'Comment'

Détaillons :

  • -P: indique le contenu de la phrase secrĂšte. Elle permet de sĂ©curiser la clĂ© elle-mĂȘme. Ici, elle est vide, il n’y en a donc pas.
  • -b: PrĂ©cise le nombre de bits de la clĂ©. Pour les clĂ©s RSA, je vous encourage Ă  utiliser au minimum 2048, voir 4096.
  • -f: SpĂ©cifie le nom de fichier de sortie du fichier de clĂ©.
  • -m: SpĂ©cifie un format de clĂ© pour la gĂ©nĂ©ration de clĂ©s. Si vous dĂ©finissez le format PEM lors de la gĂ©nĂ©ration d’un type de clĂ© privĂ©e pris en charge, la clĂ© sera stockĂ©e dans le format de clĂ© privĂ©e PEM traditionnel.
  • -t: Indique le type de clĂ© que l’on souhaite crĂ©er. D’aprĂšs mon expĂ©rience, cela se rapporte Ă  la clĂ© publique qui est crĂ©Ă©e.
  • -C: Permet d’ajouter un commentaire Ă  la clĂ© publique (presque indispensable dĂšs que vous avez plus d’une paire de clĂ©s)
  • PrĂ©cisions

    Les options -t et -b peuvent sembler redondantes, mais -t indique le type de clĂ© que l’on souhaite crĂ©er (liĂ© Ă  l’algorithme cryptographique) alors que -b prĂ©cise le format de la clĂ© (comment les clĂ©s sont encodĂ©es dans les fichiers). Les formats de clĂ© pris en charge sont : RFC4716 (clĂ© publique ou privĂ©e RFC 4716/SSH2), PKCS8 (clĂ© publique PEM PKCS8) ou PEM (clĂ© publique PEM). Sur Linux Mint, le format par dĂ©faut est RFC4716, mais cela peut-ĂȘtre diffĂ©rents ailleurs, en particulier sur FreeBSD. La dĂ©finition d’un format PEM lors de la gĂ©nĂ©ration ou de la mise Ă  jour d’un type de clĂ© privĂ©e pris en charge entraĂźnera le stockage de la clĂ© dans l’ancien format de clĂ© privĂ©e PEM.

    OK, je vous ai perdu.

Pour faire simple, les Linux dérivés de Debian, comme Ubuntu, Linux Mint et Raspberry Pi OS utilise un format de clé « moderne » correspondant à la norme SSH2.

Il semblerait qu'Android (ou au moins les applications que j’ai testĂ©es) ne supporte pas la norme SSH2, et il est donc nĂ©cessaire d’utiliser l’ancien format de clĂ© qui s’obtient en ajoutant -m PEM lors de la crĂ©ation de la clĂ©.

Voici comment concrĂštement crĂ©er une paire de clĂ©, dĂ©jĂ  Ă©voquer dans 🔑 Comment crĂ©er une clĂ© ssh mais ici on va crĂ©er des clĂ©s en utilisant le format historique :

Pour une clé dans mot de passe :

ssh-keygen -t rsa -b 4096 -m PEM -C "Moi@Tel-PEM" -f "my_phone_pem_id_rsa" -N ''

Pour une clé avec mot de passe :

ssh-keygen -t rsa -b 4096 -m PEM -C "Moi@Tel-PEM-secret" -f "my_phone_pem_pass_id_rsa" -N 'secret'

Heu, lĂ , il est pourri le mot de passe. L’idĂ©e est de mettre une phrase complĂšte, dans la documentation anglaise on parle de « passphrase », donc de phrase secrĂšte.


ඏ

Importer une clé publique

Maintenant que vous avez votre paire de clĂ©s SSH, l’étape suivante consiste Ă  copier la clĂ© publique sur le serveur ou les machines que vous voulez gĂ©rer.

Voici les paires de clés générées par les commandes précédentes:

my_phone_pem_id_rsa
my_phone_pem_id_rsa.pub
my_phone_pem_pass_id_rsa
my_phone_pem_pass_id_rsa.pub

Le fichier .pub est la clĂ© publique, c’est fichier que contient rien de secret, vous devrez ajouter son contenu dans le fichier ~/.ssh/authorized_keys

L’autre fichier (qui ne finit pas par .pub) est votre clĂ© privĂ©e Ă  mettre sur votre tĂ©lĂ©phone uniquement (et Ă©ventuellement dans une sauvegarder que vous maintiendrez en lieu sĂ»r).

  • Utilisation de ssh-copy-id

    Le moyen le plus simple et le plus recommandĂ© pour copier la clĂ© publique sur le serveur distant est d’utiliser l’outil ssh-copy-id.

    ExĂ©cutez la commande suivante sur votre machine locale ; qui vous demandera le mot de passe de l’utilisateur distant :

    ssh-copy-id utilisateur_distant@adresse_ip -i fichier_rsa_id
    

    Une fois l’utilisateur authentifiĂ©, le contenu du fichier de clĂ© publique (fichier_rsa_id.pub) sera ajoutĂ© au fichier ~/.ssh/authorized_keys de l’utilisateur distant, et la connexion sera fermĂ©e.

  • Sans l'utitilitaire ssh-copy-id

    Si l’utilitaire ssh-copy-id n’est pas disponible sur votre machine locale, utilisez la commande suivante pour copier la clĂ© publique :

    cat fichier_rsa_id.pub | ssh utilisateur_distant@adresse_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys".
    

    Les inconvénients de cette solution est que si vous exécuter plusieurs fois cette commande, le fichier sera ajouté plusieurs fois, mais également si le fichier authorized_keys est mal formé (il ne finit pas par un saut de ligne), cela ne fonctionnera pas.

    Par ailleurs notez que ssh-copy-id prend en compte SELinux.


ඏ

Tester

Pour vérifier que la clé est bien configurée sur le serveur distant, vous pouvez utiliser la syntaxe avant de mettre la clé sur votre téléphone:

ssh -o "IdentitiesOnly=yes" -v -i my_phone_pem_id_rsa pi@192.168.1.108
  • -o "IdentitiesOnly=yes" – Permet d’ignorer la recherche automatique des clĂ©s (Ă  travers le systĂšme de fichier, comme dans l’agent d'authentification. Cela permet de s’assurer que c’est bien le fichier d’identitĂ© que vous avez spĂ©cifiĂ© qui sera utilisĂ© (voir man ssh_config).
  • -v – Mode verbeux. Cela permettra de vĂ©rifier quel fichier ou mĂ©thode d’authentification a Ă©tĂ© utilisĂ©.
  • -i my_phone_pem_id_rsa – Indique le fichier d’identitĂ© (clĂ© privĂ©e) pour l’authentification.
  • pi@192.168.1.108 – Indique la machine (hostname ou ip) vers laquelle aura lieu la connexion. Permet de spĂ©cifier le nom d’utilisateur (par dĂ©faut c’est le nom de l’utilisateur courant qui est utilisĂ©): Les syntaxes possibles sont : [user@]hostname ou la forme URI : ssh://[user@]hostname[:port].

ඏ

Références et plus

኿


â„č 2006 - 2022 | 🏠 Accueil du domaine | 🏡 Accueil du blog