ssh client

ssh client

ssh est un programme pour se connecter à une machine distante et pour effectuer des commandes sur cette machine. La connexion et les échanges sont sécurisés. L'identité utilisé sur le poste distant peut être différente de l'identité du poste local utilisé.

La connexion ssh nécessite d'un service ssh sur la machine distante.

Afin d'éviter de saisir systématiquement un login et un mot de passe pour se connecter à une machine distante, il est possible de ne rien saisir et tout cela de manière sécurisée. Le mécanisme d’authentification repose sur une clé publique et une clé privée. La connexion SSH validera votre clé avec celle que le serveur connaît.

Fini les mots de passe complexe à gérer, fini le temps perdu dans la gestion des mots de passe de manière quotidienne. Cette méthode est totalement sûre et est utilisée par beaucoup de sysadmin et administrateur système. Les clés utilisées sont beaucoup plus robustes que n'importe quel mot de passe de votre création.

Si vous êtes plusieurs personnes à accéder au serveur, SSH permet de gérer plusieurs clés afin que les utilisateurs puissent se connecter avec leurs propres clés. Si vous avec la gestion de plusieurs serveurs, vous pouvez utilisez cette clé dans tous les serveurs.

Je vous propose une démarche pas à pas pour créer un jeu de clés sur votre poste de travail. On va créer deux clés. La clé privée et la clé publique. Seule la clé publique sera à déployer sur les différents serveurs. La clé privée est à conserver précieusement dans votre ordinateur.

Lancer la commande de génération de clé SSH

On génère une clé SSH de type rsa (option -t) avec le programme ssh-keygen. La longueur de 8192 bytes est définie par l'option -b.

~$ ssh-keygen -t rsa -b 8192

ssh-keygen rsa 8192

Modifier le nom et l'emplacement du jeu de clés

Le programme ssh-keygen demande si vous souhaitez de modifier l'emplacement de la clé privée.

Enter file in which to save the key (/home/chloe/.ssh/id_rsa):

Sécuriser la clé privée

La partie privée de la clé doit être conservée précieusement, et son accès doit être limité aux personnes habilitées à l'utiliser. C'est pour cela que le programme vous demande une passphrase pour votre clé SSH. Assurez-vous quant à l'utilisation de la clé privée, vous puissiez utiliser le passphrase. Les touches appuyées n’apparaîtront pas à l'écran.

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

ssh keygen enter passphrase

Lancer la commande de génération de clé SSH

On génère une clé SSH de type ed25519 (option -t) avec le programme ssh-keygen. Il n'est pas possible de définir une longueur. L'option -b est ingorée. L'option -C permet de définir un commentaire pour cette clé.

~$ ssh-keygen -t ed25519 -C "cedric@dskcdc001"

Modifier le nom et l'emplacement du jeu de clés

Le programme ssh-keygen demande si vous souhaitez de modifier l'emplacement de la clé privée.

Enter file in which to save the key (/home/chloe/.ssh/id_ed25519):

Sécuriser la clé privée

La partie privée de la clé doit être conservée précieusement, et son accès doit être limité aux personnes habilitées à l'utiliser. C'est pour cela que le programme vous demande une passphrase pour votre clé SSH. Assurez-vous quant à l'utilisation de la clé privée, vous puissiez utiliser le passphrase. Les touches appuyées n’apparaîtront pas à l'écran.

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

Contrôler le contenu de la clé privée

Par curiosité, vous pouvez afficher la clé :

echo List des clés
ls ~/.ssh/
echo Nom de la clé ?
read nomCle
cat ~/.ssh/$nomCle

contenu d'une clé privée

Pour utiliser la clé, il faut copier la clé publique vers le poste distant. Votre clé publique se trouve dans un fichier présent dans le dossier .ssh du dossier utilisateur. Elle doit être ajoutée au fichier .ssh/authorized_keys de l'ordinateur distant.

Par exemple :

  • ~/.ssh/id_rsa.pub est mon fichier de clé publique que je veux envoyer
  • srvprod.aceinternet.fr est le serveur dans lequel on pose le fichier

La commande ssh-copy-id permet ces opérations :

chloe$ ssh-copy-id -i ~/.ssh/id_rsa.pub chloe@srvprod.aceinternet.fr

L'équivalent avec la commande ssh :

cat ~/.ssh/id_rsa.pub | ssh adminsrv@srvprod.aceinternet.fr "cat - >> ~/.ssh/authorized_keys"

On peut créer un fichier config contenant toutes les informations de connexion à SSH.

config
host srvprod.aceinternet.fr
  HostName srvprod.aceinternet.fr
  Port 2134
  User adminsrv
  IdentityFile ~/.ssh/id_rsa_adminsrvAceinternetFr

Il faudra veiller à protéger votre fichier :

$ chmod 600 ~/.ssh/config
 
$ chown $USER ~/.ssh/config

La clé de l'hote distante a changée :-(

Après avoir essayé d'effectuer un

ssh 192.168.100.5

, j'ai une erreur :

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
fa:f8:ec:af:20:0e:58:ca:d1:4d:47:b0:7e:fa:2b:e2.
Please contact your system administrator.
Add correct host key in /home/cedric/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/cedric/.ssh/known_hosts:5
ECDSA host key for 192.168.100.5 has changed and you have requested strict checking.
Host key verification failed.

Cela signifie que la clé ECDSA (ECDSA key) qui sécurise la connexion entre le client et l'hôte distante, et qui est stockée localement sur le client, n'est plus la même que la nouvelle clé de l'hôte distante. Cette clé ECDSA a été générée lors de la toute première connexion.

Dans ce cas, il faut réinitialiser l'entrée pour se connecter à cette hote.

Tant que la clé locale n'aura pas été effacée, la connexion à l'hote distante en SSH sera impossible. La clé est stockée dans un fichier nommé known_hosts qui se trouve dans le répertoire caché suivant .ssh de l'utilisateur. Par exemple :

 /home/cedric/.ssh/known_hosts

Pour réinitialiser la clé pour l'hote distante, il faut saisir :

ssh-keygen -R 192.168.100.5

Cela va suprimer du fichier /home/cedric/.ssh/known_hosts, l'enregistrement pour l'hote 192.168.100.5.

Il ne reste plus qu'à se connecter de nouveau :

ssh 192.168.100.5

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for raspberrypi has changed,
and the key for the corresponding IP address 192.168.100.84
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /home/cedric/.ssh/known_hosts:66
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:kAmTpCxHgmxEjMRO02lHxatQPXzJ3dHcaJCXb+eqswA.
Please contact your system administrator.
Add correct host key in /home/cedric/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/cedric/.ssh/known_hosts:62
ECDSA host key for raspberrypi has changed and you have requested strict checking.
Host key verification failed.

Ce message signifie que le nom de la machine (raspberrypi) est déjà attribué à une autre clé de connexion. La solution est d'effacer l'enregistrement associé à cette machine.

$ ssh-keygen -R raspberrypi

En essayant de se connecter de nouveau à la machine, l'association entre le nom de machine et la clé sera de nouveau enregistrée.

Entrer votre commentaire. La syntaxe wiki est autorisée:
   ____   ____   ___    ___   _      __
  /  _/  / __/  / _ \  / _ \ | | /| / /
 _/ /   / _/   / , _/ / , _/ | |/ |/ / 
/___/  /___/  /_/|_| /_/|_|  |__/|__/
 
  • informatique/se/linux/commandes/ssh.txt
  • Dernière modification: 2020/05/07 13:52
  • par Cédric ABONNEL