dernière modification : 2025

Connexions distantes

1. ssh

La commande ssh permet d’accéder à un shell sur une machine distante.

nom de l’équipement local et nom de l’utilisateur sur cet équipement
$ hostname
ordi1
$ whoami
jaclin
connexion à l’équipement distant
$ ssh jc@ordi2
jc@ordi2's password:
Last login: Sat Mar 22 11:01:06 2025 from 192.168.50.80
nom de l’équipement distant et nom de l’utilisateur sur cet équipement
$ hostname
ordi2
$ whoami
jc
fermeture de la session distante
$ ^D

$ hostname
ordi1
$ whoami
jaclin

2. rsync

rsync est une commande sophistiquée (grace à ses nombreuses options) de copie de fichiers entre 2 équipements. Elle utilise le protocole ssh. Exemples :

copie d’un fichier sur l’équipement distant
$ rsync ~/.bashrc jc@ordi2:/tmp
copie d’une arborescence sur l’équipement distant
$ rsync -r ~/Documents jc@ordi2:documents_originaux/
rapatriement d’un fichier sur l’équipement local
$ rsync jc@ordi2:Documents/mon_fichier.txt .
rapatriement d’une arborescence sur l’équipement local en conservant les attributs (dates, propriétaire, droits, etc.)
$ rsync -a jc@ordi2:documents_originaux .

3. Authentification par clés

L’authentification par clés peut se subsister à l’authentification par login/mot de passe d’une connexion ssh. Cela évite donc d’avoir à entrer un mot de passe à la connexion.

3.1. Principe théorique

Tout repose sur un jeu de 2 clés dépendantes l’une de l’autre (une clé est simplement un grand entier) dont les propriétés sont telles que :

  1. tout ce qui est chiffré avec l’une des 2 clés est déchiffrable avec l’autre (et seulement avec elle),

  2. il est impossible de retrouver l’une des 2 clés à partir de l’autre.

Le possesseur des 2 clés choisit l’une d’elle comme étant publique (donc diffusable à tout le monde), et l’autre comme privée (qui doit rester secrète, seul son propriétaire doit la connaitre).

Avec cela :

  1. quiconque réussissant à déchiffrer un message chiffré avec une clé publique est sûr que c’est le propriétaire de cette clé publique qui en est l’auteur (puisque lui seul a pu le chiffrer avec sa clé privée),

  2. et inversement, quiconque voulant rédiger un message confidentiel à destination d’un correspondant chiffre le message avec la clé publique du correspondant (car seul le correspondant pourra le déchiffrer avec sa clé privée).

3.2. En pratique

Pour pouvoir s’authentifier par clés, il faut :

  1. générer le bi-cle sur le poste de travail,

  2. conserver la clé privée localement, bien protégée de la lecture (et de l’écriture),

  3. déposer la clé publique sur chaque équipement sur lequel on veut pouvoir se connecter sans mot de passe.

3.2.1. Générer le bi-clé sur le poste de travail

ordi1$ ll ~/.ssh
ls: impossible d'accéder à '~/.ssh': Aucun fichier ou dossier de ce nom

donc pas de répertoire ~/.ssh sur l’équipement local.

ordi1$ ssh-keygen
Generating public/private ed25519 key pair.
Enter passphrase for "~/.ssh/id_rsa" (empty for no passphrase):
Your identification has been saved in ~/.ssh/id_rsa
Your public key has been saved in ~/.ssh/id_rsa.pub

ordi1 $ ll ~/.ssh
total 32
-rw-------. 1 jaclin jaclin 1675 31 oct.  21:46 id_rsa
-rw-r--r--. 1 jaclin jaclin  395 31 oct.  21:46 id_rsa.pub

3.2.2. Déposer la clé publique sur un équipement distant

ordi1$ ssh jc@ordi2 ls -l ~/.ssh
jc@ordi2's password:
ls: impossible d'accéder à '/home/jc/.ssh': Aucun fichier ou dossier de ce nom

donc pas de répertoire ~/.ssh sur l’équipement distant.

ordi1$ ssh-copy-id jc@ordi2
jc@ordi2's password:

ordi2$ ls -l .ssh
total 4
-rw-------. 1 jc jc 395 29 mai   10:55 authorized_keys

Maintenant, l’utilisateur peut se connecter, depuis son poste de travail, à la machine distante, sans fournir de mot de passe.

ordi1$ ssh jc@ordi2 hostname
ordi2