SSH sous GNU/Linux

Connexion à distance

Le client SSH est installé par défaut sur la plupart des distributions. Si ce n'est pas le cas, il faut installer un paquet dont le nom est généralement "openssh-client".

Une fois installé, il est possible d'ouvrir une session à distance de la manière suivante :

ssh utilisateur@ip_serveur

Si vous ne spécifiez pas de nom d'utilisateur, c'est l'utilisateur courant de votre session GNU/Linux qui sera utilisé.

Pour lancer des applications graphiques, il faudra le préciser dans la commande ssh en rajoutant l'option -X :

ssh -X utilisateur@ip_serveur.

A la première connexion, le message suivant apparaît :

Warning: Permanently added 'xxxxx' (RSA) to the list of known hosts.

Cela signifie qu'on ne s'est jamais connecté sur cette station et qu'un identifiant est ajouté à la liste des hôtes connus.

Il peut arriver que le certificat du serveur change (par exemple en cas de réinstallation).

Le message suivant apparaîtra :

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ 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 the RSA host key has just been changed.

The fingerprint for the RSA key sent by the remote host is

65:6d:9d:c0:78:f7:60:bf:13:86:59:16:53:07:3b:a4.

Please contact your system administrator.

Add correct host key in /home/xxx/.ssh/known_hosts to get rid of this message.

Offending key in /home/xxx/.ssh/known_hosts:12

Password authentication is disabled to avoid man-in-the-middle attacks.

Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.

X11 forwarding is disabled to avoid man-in-the-middle attacks. Permission denied (publickey,password).

Ce message nous apprend plusieurs choses :

  • le serveur ssh a une clef différente de celle de notre dernier passage ;
  • le fichier comprenant les hôtes connus est /home/xxx/.ssh/known_hosts ;
  • l'identifiant de l'hôte est spécifié à la ligne 12 (Offending key in /home/xxx/.ssh/known_hosts:12).

Si vous êtes sûr que l'hôte est le bon, il vous suffira de supprimer la ligne 12 du fichier known_hosts et de relancer une connexion.

Il faudra spécifier le mot de passe de l'utilisateur pour se connecter.

Ssh propose également la connexion par échange de clef. Cela permet de se connecter à distance sans connaître le mot de passe de l'utilisateur.

L'échange de clef peut être réalisé par l'intermédiaire d'un serveur Zéphir. Pour plus d'informations, consulter la documentation spécifique à ce module.

Exécution de commande à distance

Une fois connecté à distance, vous pouvez lancer n'importe quelle action comme si vous étiez en local.

Transfert de fichier à distance

Pour envoyer un fichier sur un serveur, il faut faire :

scp nom_du_fichier utilisateur@ip_serveur:/repertoire/de/destination/

Pour récupérer un fichier d'un serveur :

scp utilisateur@ip_serveur:/repertoire/source/nom_du_fichier /repertoire/de/destination/

Pour récupérer un répertoire d'un serveur :

scp -r utilisateur@ip_serveur:/repertoire/ /repertoire/de/destination/

Enfin, il est possible d'avoir un shell proche de la commande FTP en faisant :

sftp utilisateur@ip_serveur

Truc & astuce

Sur la plupart des gestionnaires de fichier disponibles sous GNU/Linux, il est possible de faire des transferts de fichier avec SSH graphiquement (logiciel Filezilla par exemple).