CransWiki:

Qu'est ce que le SSH ?

SSH signifie Secure SHell. C'est un protocole qui permet d'établir une communication entre un serveur et un client SSH de manière sécurisée.

Par déformation, on parlera souvent de SSH comme un outil permettant de se connecter à un ordinateur distant possédant un serveur SSH et par la suite de travailler sur cette machine distante.

{i} Les communications SSH se font sur le port 22.

Pourquoi utiliser cet outil

{i} Il est inhabituel de voir un serveur SSH installé sur une machine équipée d'un système Windows. Toutefois, vous trouverez ci-après une liste de programmes gratuits ou en évaluation gratuite, permettant d'utiliser SSH sous Windows.

Comment installer cet outil

Sous Windows

Les terminaux

Les clients pour accéder aux fichiers

Les serveurs

Sous Linux

Le client SSH est installé par défaut sous la plupart des versions de Linux. Sinon, pour les Linux Debian-based, vous pouvez l'installer avec :

sudo apt-get install openssh-client

Pour information, voilà où trouver des clients ssh, on pourra aussi aller voir avec profit la page du projet OpenSSH. Il faut consulter le site de votre distribution favorite ou aller voir le serveur officiel, sur Sunsite ou encore sur notre ftp public.

Sous MacOS 8.x et 9.x (pour MacOS X voir Unix)

Celui-là ou celui-ci mais ce sont des versions commerciales.

L'utiliser

Sous Linux

Dans un terminal :

ssh login@machine.domain.tld

Vous devez ensuite fournir votre mot de passe.

Oui, rien ne s'affiche, même pas des *, c'est pour que personne ne puisse voir ne serait-ce que le nombre de caractères de votre mot de passe.

Sous Windows

Avec PuTTY, entrez la machine à laquelle vous chercher à vous connecter (machine.domain.tld) dans la case "Host Name (or IP address)". Puis cliquez sur Open ou appuyez sur Entrée.

On vous demande ensuite le login et le mot de passe.

Vous pouvez également préciser login@ directement dans la case Host Name.

Vous pouvez utiliser Save pour enregistrer vos différentes configurations pour vous connecter à différents serveur sans avoir besoin de les retaper d'une fois sur l'autre.

Les clefs SSH

Une clef SSH permet de se connecter en SSH, à partir d'une machine donnée (ordinateur personnel), sur une machine sur laquelle on a un compte (par exemple, zamok) sans devoir pour cela taper systématiquement son mot de passe.

Générer la clef

Tout cela repose sur du chiffrement asymétrique. Vous avez chez vous la clé privée, que vous conservez jalousement secrète, et vous placez la clé publique sur chacune des machines auxquelles vous voulez pouvoir vous connecter.

Pour générer la paire de clé, on utilise ssh-keygen.

ssh-keygen -t rsa

L'option -t permet de créer une clé de type RSA. Il existe également DSA et ECDSA. RSA est le type par défaut, ECDSA n'est pas supporté par toutes les versions de SSH.

On vous demande ensuite où vous voulez stocker la clé privée, l'emplacement par défaut /home/user/.ssh/id_rsa est parfait, sauf si vous avec déjà une clé là et que vous en voulez une autre. On vous demande également une passphrase. Il est vivement conseillé d'en mettre une3, sinon toute personne mettant la main sur votre ordinateur aura accès à cette clé privée non protégée, et donc aux machines sur lesquelles vous aurez mis la clé publique (on peut modifier la passphrase avec ssh-keygen -p, habituellement une passphrase est sensiblement plus longue qu'un mot de passe).

Cela crée un fichier .pub et un fichier sans .pub.

Publier la clé

On copie ensuite la clef publique à la fin du fichier authorized_keys de l'utilisateur distant sur le serveur distant.

Donc le fichier /home/userdistant/.ssh/authorized_keys ressemble à ça :

ssh-rsa AAAB3NzaC1yc2E[…]/5POqR5 vincent@cabal
ssh-rsa AAAAB3NzaC1yc2EA[…]dww== /home/badguy/.ssh/id_rsa

Le premier champ indique le type de clé, le deuxième est un beau blob en base64 de la clé publique, et le troisième champ est un commentaire. Vous pouvez mettre ce que vous voulez dedans, mais en général on met user@host_de_provenance, histoire de savoir pourquoi cette clé est là. Malheureusement, bien souvent on voit /home/username/.ssh/id_rsa, ce qui n'est pas très informatif parce que les clés SSH sont pratiquement toujours rangées là.

Il existe une commande dédiée pour exporter votre clé SSH (à exécuter sur la machine depuis laquelle vous vous connectez) :

ssh-copy-id -i ~/.ssh/id_rsa.pub login@machine.domain.tld

-i permet de spécifier quelle clé on veut exporter (utile si on en a plusieurs), mais si on l'omet, il ira chercher au path par défaut. (Et bien entendu, on vous demande votre mot de passe puisque la clé n'est pas encore exportée.)

Cette commande n'existe pas sous Mac OS, donc vous devrez ajouter vous-même la ligne dans le fichier authorized_keys. Si c'est la premier fois que vous le faites, il vous faudra d'abord créer le dossier avant et donner les bons droits d'accès à ce petit monde, sinon SSH considérera que c'est trop risqué et les ignorera (à exécuter sur la machine cible, le serveur, donc après vous être connectés (en fournissant votre mot de passe, donc)) :

mkdir .ssh
chmod 700 .ssh
cd .ssh
nano authorized_keys
[coller la clé, sauvegarder (Ctrl+O), quitter nano (Ctrl+X)]
chmod 600 authorized_keys

Utiliser la clé

En admettant que vous n'ayez rien fait d'autre, si maintenant vous faites

user@chezmoi$ ssh login@machine.domain.tld
Enter passphrase for key '/home/user/.ssh/id_rsa':

Et vous de me dire "C'est nul ton truc, à la place de taper à chaque fois mon mot de passe, je tape à chaque fois ma passphrase, et en plus tu m'as dis qu'elle devait être plus longue !". Si vous vous arrêtez là, effectivement, c'est nul.

L'intérêt est que la passphrase vous pouvez ne la taper qu'une fois, et la clé privée est déverrouillée pour un temps donné, voire jusqu'à ce que vous éteignez votre machine/fermiez votre session. Celui qui va mémoriser votre clé déverrouillée, on l'appelle l'agent SSH.

Petit problème : gnome (l'environnement graphique par défaut, donc probablement celui que vous avez) a très envie de jouer à l'agent SSH à la place de l'agent SSH, et il fait ça mal. Donc, si c'est votre cas, tapez :

gnome-session-properties

une jolie fenêtre poppe, décochez dedans la case "Agent de clés SSH" (oh et puis tant que vous y êtes, décochez aussi "Agent de mot de passe GPG", ça vous rendra service quand vous voudrez utiliser un agent GPG).

Cette info n'est plus à jour sur les systèmes qui ne vivent pas dans le passé (gnome-session-properties n'existe plus). Si vous lisez cette page, que cette bannière est encore là et que vous en avez besoin, pokez gentiment 20-100 pour lui demander de mettre ici ses dernières trouvailles sur le sujet…

Ou, si vous vous sentez courageux, googlez-le, trouvez vous-même et éditez la page ! Prévenez-le quand même, ça lui fera très plaisir ;)

Maintenant, pour déverrouiller votre clé, tapez :

ssh-add

puis votre passphrase. Et voilà, votre clé est déverouillée, et vous pouvez aller vous balader en ssh sans taper de mot de passe. L'option -t de cette commande vous permet de spécifier la durée (en secondes) au bout de laquelle la clé se reverrouillera. Si vous ne mettez rien, elle restera déverrouillée jusqu'à la mort de votre agent (normalement, la fermeture de la session/extinction de la machine).

Astuces

On peut en trouver plein sur la page ../AstucesSsh (allez au moins voir comment on se fait un .ssh/config).


CatégoriePagePublique

  1. le serveur est alors ssh.crans.org. (1)

  2. par exemple, pour le département maths, le serveur est ssh.dptmaths.ens-cachan.fr, et pour le département GC, le serveur est ssh.dgc.ens-cachan.fr. (2)

  3. Un cas typique où on ne met pas de passphrase est quand la clé est destinée à être utilisée par un script, qui ne sait pas taper un mot de passe. (3)

CransWiki: WikiInformatique/ConnexionSsh (last edited 2016-03-26 08:45:37 by Wiki20-100)