Files
lespiedsdanslecode/content/posts/2007/2007-01-23-ssh-avec-clefs.md
T
Yannick Francois 10796b4e52 mise à jour
2020-02-17 17:03:01 +01:00

4.3 KiB
Raw Blame History

layout, title
layout title
post ssh avec clefs

Accéder à un serveur, avant ça se faisait par telnet. Maintenant Telnet est utilisé pour tester les connexions dun serveur HTTP ou SMTP (ou autres) mais surement pas pour faire de ladministration de machine, car telnet est simple, basique et transmet en clair toute les instruction tapé, y compris les mots de passe.

Pour un accès plus sécurisé, ladministration de serveur (ou la simple connexion) seffectue par le biais dSSH. SSH est un protocole de communication, OpenSSH (voir aussi le site officiel OpenSSH.org) est un ensemble doutil libre permettant lutilisation de ce protocole.

Bon on arrête là les liens vers wikipedia :p Le but cest donc de ce connecté de manière sécurisé à une machine distante. Pour cela, la machine distante doit avoir un “serveur” (ou démon) ssh qui écoute sur un port (par défaut: le 22). La commande en question: ssh login@machine

Et oui, tout simplement aller voir la man page ssh(1) pour en savoir plus.

Ensuite il faut saisir un mot de passe. Quand cest une fois de temps à autre, ça peut aller. Quand cela vous arrive souvent taper tout le temps des mot de passe peut devenir pénible. On peut y remédier simplement. Tout dabord, il faut se créer une clé. La commande ssh-keygen(1) nous permet de créé une clé privée et une clé publique chiffré en utilisant soit un type RSA soit DSA (arf, encore des lien wikipédia :-p ). Prenons DSA qui apparement est plus sécurisé (je ne suis pas un expert en sécurité, si quelquun peut me confirmé ça ?)

  {% highlight bash %}
    yafra@yeti:~$ ssh-keygen -t dsa
    Generating public/private dsa key pair.
    Enter file in which to save the key (/home/yafra/.ssh/id_dsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/yafra/.ssh/id_dsa.
    Your public key has been saved in /home/yafra/.ssh/id_dsa.pub.
    The key fingerprint is:
    xx:33:xx:11:DD:aa:a1:33:dc:d1:ca:ef:09:fd:28:e6 yafra@yeti
  {% endhighlight %}

En plus de préciser lendroit où lon souhaite placer les clefs, on peut préciser une phrase qui servira de confirmation de clef. Cette commande va donc créer une clé publique et une privée dans le répertoire .ssh (dans mon cas). On retrouve un fichier id_dsa pour la clé privée et un id_dsa.pub pour la clé publique.

Bien, maintenant on va ajouter la clé publique sur les serveur que lon veux pouvoir contacter sans saisir de mot de passe. On vas utiliser la commande scp(1) pour ça.

scp .ssh/id_dsa.pub monlogin@monserveur:.ssh/

On place notre clé publique dans le repertoire .ssh de notre utilisateur sur le serveur cible. Ensuite il faut se placer sur le serveur en question pour effectuer lajout de la clé dans la liste des cléfs autorisés:

  {% highlight bash %}
    ssh monlogin@monserveur
    cat .ssh/id_dsa.pub >> .ssh/authorized_keys
  {% endhighlight %}

Et voilà, le tour est joué. On peut maintenant se connecter en ssh sur cette machine en tapant simplement: ssh monlogin@monserveur

Et sans avoir à taper de mot de passe. La seul condition est davoir la clé privé correspondante placé dans le repertoire .ssh (ou autre en fonction de la configuration du client ssh, mais cest une autres histoire).

Ca faisait longtemps que javais pas posté. Faut dire quen se moment jesuis pas mal pris... tiens je vais dailleurs faire un petit top un de ces jours, dès que jai retouché quelque photos pour mettre avec :).

Pour ce qui est de ce billet, cest pas bien compliqué, cest des infos quon peut trouver sur pas mal de site, mais je pense que ça ne tueras personne que linfo soit disponible un peu plus :) et puis ça me fait plaisir de parler dOpenSSH et de SSH en général, je men sert quotidiennement. Désolé pour ceux qui eventuellement ne comprendrais rien à tout ça (hein Terckan ;-) ).