SSH Cheat Sheet

Comment débuter avec SSH ? Et d’abord, c’est quoi SSH ?

Introduction

Pour commencer, quand vous vous connectez sur une machine, vous tapez votre nom de compte et votre mot de passe. Les deux sont envoyés au serveur qui héberge votre compte, qui compare ce qui est marqué dans sa base de données, et vous répond OK ou pas, si vous êtes inscrit et si votre mot de passe est le bon. Ceci peut avoir lieu pour un service de courriel, un service de banque, un ordinateur distant…

Dans tous les cas, imaginez que l’information circule en clair sur le réseau. Un ordinateur malveillant qui lit tous les paquets qui passent sur le réseau où il est connecté va voir “login: XXX” puis “password: YYY” dans un paquet. C’est le scénario primitif de piratage.

SSL est une méthode qui a été inventée pour se protéger contre ces écoutes malveillantes du réseau. Quand le protocole SSL est utilisé, même si l’écoutant dispose de tous les paquets échangés il ne peut pas reconstituer le message en clair avec des moyens raisonables. Rien n’est impossible, mais avoir besoin d’un milliard d’année ou d’un million de machines est dissuasif.

Ce que vous avez besoin de savoir est que:

Pour vous connecter à un ordinateur en ligne de commande avec SSL, la commande s’appelle SSH.

Pour vous connecter à un serveur de courriel avec SSL, le protocole s’appelle TLS.

Pour vous connecter à un serveur web avec SSL, le protocole s’appelle HTTPS (par opposition à HTTP qui envoie tout en clair!)

Créer une clef SSH

En fait, il s’agit de créer une paire de clefs privée-publique. La clef privée doit se trouver dans un dossier spécial, et avec les bonnes protections

Mac et Linux

Sous Mac et Linux, il suffit de faire:

ssh-keygen -b 4096

Il apparait:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):

Vous donnez le nom du fichier (vous pouvez avoir plusieurs clefs privées pour plusieurs usages différents) puis:

Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
0a:3a:a4:ac:d1:40:6d:63:6d:fd:d9:fa:d6:b2:e0:36 user@host
The key's randomart image is:
+---[RSA 4096]----+
|      .          |
|                 |
| .               |
|. . . .          |
|. .=.o .S.       |
| =o.o. ..   .    |
|o +   .  . o ..  |
|.. .      oEoo . |
|o.        .o+oo  |
+-----------------+

Le petit dessin change à chaque fois.

Si vous avez donné comme nom de fichier enarsituol, c’est le nom de la clef privée, et enarsituol.pub est le nom de la clef publique, à mettre sur le serveur.

La clef privée doit avoir pour protections:

chmod 440 enarsituol

Windows

L’outil pour Windows est puttygen.

Par défaut, cet outil crée un fichier unique .ppk, mais vous pouvez aussi sauver les deux clefs dans deux fichiers.

Sous Windows, il faut mettre ces clefs dans C:\Documents and Settings\username\.ssh\ ou C:\Users\username\.ssh

Gitlab

La connection à gitlab se fait toujours avec HTTPS, donc pas de problème de sécurité. Mais votre login et mot de passe vous est demandé à chaque connection, donc à chaque push…

Sur le site de gitlab à l’école, allez dans votre profil (icone en haut à droite), choisissez les parametres, puis clefs SSH.

Copiez le texte de votre clef publique dans le presse-papier (clipboard), et collez le dans la zone Clef.

Mettez un titre à cette clef.

Faites Ajouter la clef.

La clef apparait alors dans Vos clefs SSH en dessous.

Configuration git en ligne de commande

Vous pouvez dire à chaque commande git que la clef se trouve dans tel fichier. Mais c’est lourd.

Pour que la ligne de commande git soit plus simple, vous pouvez créer un fichier .ssh/config

Host gitlab.enst.fr
  IdentityFile ~/.ssh/nomdevotreclefprivee
  IdentitiesOnly yes

Notez le gitlab.enst.fr (et pas telecom-paris): c’est du vécu, c’est comme cela que ça marche sur mon mac.

Ce fichier doit aussi avoir les protections 440.

Conclusion

Voilà. Après tout ceci, vos git clone/push/pull fonctionneront de manière sécurisée et facile.