Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:impilopedia:unix:ssh_native [2021/09/09 09:37] – [Protocole avec mot de passe] foisysfr:impilopedia:unix:ssh_native [2021/09/09 09:40] (Version actuelle) – [Protocole sans mot de passe] foisys
Ligne 1: Ligne 1:
 +====== Comment se connecte à un serveur distant de manière sécuritaire sous Mac OS X et Linux ======
 +
 +===== Introduction =====
 +
 +Les communications entre clients et serveurs ne se font plus de manière ouvertes comme à une certaine époque (voir [[https://fr.wikipedia.org/wiki/Telnet|Telnet]]): un serveur bien configuré ne devait plus accepté de connections non-sécurisées… Par conséquent, la plupart du temps, il faudra utiliser [[https://fr.wikipedia.org/wiki/Secure Shell|SSH]], une méthode par défaut encryptée et sécurisée.
 +
 +SSH fonctionne avec une logiciel serveur (''sshd''), qui fonctionne dans l'arrière-plan du serveur qui reçoit les communications et un logiciel client (''ssh''), qui initie les connexions vers un serveur ''sshd''. Ces deux logiciels sont toujours présents sur Mac OS X et presque toujours présents sur Linux (il est parfois nécessaire d'installer ''sshd'' à part, ''ssh'' étant toujours présent).
 +
 +Une chose évidente: une telle communication ne peut se faire que si le serveur distant le permet! Par exemple:
 +
 +  * Il faut que ''sshd''  fonctionne sur le serveur distant;
 +  * Le service ''sshd''  ne bloque pas certains usagers ou certaines adresses IP;
 +  * Il faut que le réseau sur lequel est branché le serveur distant vous soit accessible, soit directement (adresse/nom de domaine visible sur l'Internet) ou indirectement (accès sécurisé via un VPN).
 +
 +===== Protocole avec mot de passe =====
 +
 +  * Une connexion est très facile; comme valeur de ''username'', utilisez le nom d'usager que vous avez sur le serveur distant. Attention: si vous n'entrez pas de nom d'usager, ''ssh''  utilisera votre nom local, qui pourrais évidemment être différent…
 +
 +<sxh bash> 
 +# Première façon: 
 +% ssh username@addresse.ip.serveur.distant 
 +# Deuxième façon: 
 +% ssh username@nom.serveur.distant 
 +</sxh>
 +
 +  * ''ssh''  vous demandera alors de tapez le mot de passe pour accéder au serveur distant; simplement procéder tel que demandé :-)
 +  * Lors d'une première connexion à un serveur, ''ssh''  vous demandera d'accepter la clé du serveur distant; simplement taper ''Yes''. Tapez ''Y''  n'est pas suffisant… Il ne le demandera plus à l'avenir.
 +      * Note: l'information des clés connues est stockée dans un fichier qui s'appelle ''known_hosts''  que vous trouverez dans le répertoire ''.ssh''  qui se trouve dans votre répertoire ''home''.
 +
 +  * Vous devriez être maintenant dans votre répertoire ''home''  distant.
 +
 +===== Protocole sans mot de passe =====
 +
 +  * Il est parfois fort utile d'accéder à un serveur distant sans avoir à utiliser de mot de passe, par exemple, si on veut automatiser certaines opérations comme des sauvegardes sans interventions humaines. Comment ''sshd''  fait alors pour vous reconnaitre? Il faut simplement lui fournir un preuve de votre identité via une clé publique que vous devez lui fournir.
 +
 +  * Étape préliminaire: vérifiez que vous n'avez pas déjà une clé d'identification:
 +
 +<sxh bash> % ls -al ~/.ssh/id_*.pub </sxh>
 +
 +  * Si cette commande vous retourne une sortie comme ''id_rsa.pub''  ou bien ''id_dsa.pub'', vous avez déjà votre clé ;-)
 +
 +  * Si vous n'avez rien eu comme sortie avec la commande précédente alors dans un terminal, créez votre clé public qui servira à identifier votre client de manière unique:
 +
 +<sxh bash> 
 +# Une possibilité: 
 +% ssh-keygen -t rsa -b 4096 -C "votre_courriel@blablabla.org" 
 +# Une autre possibilité, en utilisant un autre algorithme de création de clé: 
 +% ssh-keygen -t dsa -b 4096 -C "votre_courriel@blablabla.org" 
 +</sxh>
 +
 +  * À chaque fois que le programme vous demande d'entrer un choix ou une information, pressez ''ENTER''  pour le choix par défaut ou ne rien mettre.
 +
 +  * Vous devriez avoir maintenant deux fichiers dans le répertoire ''.ssh''  contenu dans votre répertoire racine: ''id_rsa''  (clé privée) et ''id_rsa.pub''  (clé publique). Il vous faut maintenant transmettre l'information contenu dans ''id_rsa.pub''  au serveur distant:
 +
 +<sxh bash> 
 +% ssh-copy-id remoteusername@serveur.blablabla.org 
 +</sxh>
 +
 +  * Le programme vous demandera le mot de passe pour accéder à votre compte sur le serveur distant. Si tout va bien, vous reviendrez au prompt de votre console. Testez votre nouvelle connexion:
 +
 +<sxh bash> 
 +% ssh remoteusername@serveur.blablabla.org 
 +</sxh>
 +
 +  * Vous devriez maintenant accéder à votre compte sans mot de passe ;-) Le serveur distant vous reconnait grace à votre clé privée qui, en association à la clé publique sur le serveur, forme un combinaison unique à vous. De plus, la combinaison clé privée et clé publique permet la [[https://fr.wikipedia.org/wiki/Cryptographie_asymétrique|cryptographie asymétrique]] de vos communications.
 +
 +