Documentation technique : Debian
Documentation basée sur la distribution Debian

> > Utilisation et configuration spécifiques coté client

Utilisation et configuration spécifiques coté client

Faciliter la connexion au serveur

Cette partie n’est valable que pour les systèmes basés sur Unix (linux, Mac OS X...)

Il est souvent nécessaire, pour se connecter à un serveur distant de taper des commandes à rallonge du type :

  1. ssh user@IP_DU_SERVEUR
  2. # ou par exemple
  3. ssh user@sous_domaine.mon_domaine.tld

Télécharger

Alors qu’il serait plus simple de taper une commande simple de la sorte :

  1. ssh serveur

Ici serveur est un alias de user@sous_domaine.mon_domaine.tld ou de user@IP_DU_SERVEUR [1]

La configuration des clients se fait dans le fichier ~/.ssh/config (à noter que le ~/ désigne le dossier "Home" de l’utilisateur en cours). Nous allons donc éditer ce fichier (cela le créera au cas où il n’existe pas) :

  1. nano ~/.ssh/config

Pour notre exemple, nous allons ajouter les lignes suivantes :

  1. Host serveur #"serveur" est l'identifiant que vous souhaitez utiliser pour la machine
  2.   Hostname XXX.XXX.XXX.XXXX # Adresse IP ou FQDN de la machine
  3.   User user # "user" est l'utilisateur avec lequel nous souhaitons nous connecteur
  4. #  Port 4528 # Port à utiliser si le serveur ssh n'est pas configuré sur le port habituel (22)

Télécharger

Vous pouvez définir plusieurs serveurs dans le même fichier bien entendu du genre :

  1. Host serveur1
  2.   Hostname sous_domaine.mon_domaine.tld
  3.   User user1
  4.   Port 4528
  5.  
  6. Host serveur2
  7.   Hostname IP_DU_SERVEUR
  8.   User user2

Télécharger

Il est également possible de définir dans ce fichier de congiguration une ou plusieurs sections génériques à base de wildcards pour regrouper des éléments de configurations par exemple :

  1. Host *
  2.   # Ici nous allons mettre l'ensemble des directives pour tous les hotes
  3.  
  4. Host *.mon_domaine.tld
  5.   # Ici nous allons mettre l'ensemble des directives pour tous les sous domaines de mon_domaine.tld
  6.  
  7. Host serveur*
  8.   # Ici nous allons mettre l'ensemble des directives pour tous les hotes commençant par serveur

Télécharger

Ces options sont cumulatives donc chaque Host bénéficiera des directives de la première définition Host *, puis des autres définies s’il correspond à l’une ou l’autre des règles.

Les options sont facultatives, vous devez les modeler en fonction de vos besoins.
D’autres options sont également disponibles et la lecture de la commande man ssh_config vous aidera à mieux les comprendre.

Liste non exhaustive des options

  • Hostname : nom d’hôte ou adresse IP de la machine sur laquelle se connecter ;
  • User : nom d’utilisateur à utiliser pour se connecter ;
  • Port : port réseau à utiliser ;
  • IdentityFile : chemin vers la clé d’identification publique à utiliser (par exemple : ~/.ssh/ma_cle.pub) ;
  • ProxyCommand : spécifie la commande proxy à lancer avant la connexion au serveur (utile lorsque l’on doit se connecter à une autre machine faisant office de passerelle) ;

Cas spécifiques d’utilisation du fichier config

Connexion à travers une passerelle
Imaginons le cas où l’on souhaite se connecter à une machine dans un réseau local dont le port utilisé par le ssh n’est pas exposé à Internet mais seulement dans un réseau local, ou que cette machine n’autorise via sa configuration (firewall...) la connexion que via une adresse IP spécifique.

Dans ce cas, il est nécessaire de se connecter à une machine dite passerelle (gateway) avant d’être connecté au serveur souhaité. La méthode la plus simple mais la plus longue et ennuyante consisterait à se connecter à la première machine :

  1. ssh user1@passerelle.mondomaine.com

Puis depuis la seconde machine, refaire l’opération pour se connecter au serveur final :

  1. ssh user1@serveur.mondomaine.com

Soit lancer deux commandes. On peut alors enchaîner les deux commandes de la sorte pour le faire en une seule fois :

  1. ssh -A user1@passerelle.mondomaine.com  ssh user1@serveur.mondomaine.com

Mais cela posera forcément des problèmes que ce soit d’écriture ou de possibilités offertes.

Pour faciliter cela, on peut utiliser le fichier config expliqué ci-dessus avec l’option ProxyCommand.

On ouvre le fichier config :

  1. nano ~/.ssh/config

Et on y ajoute notre définition d’hôte qui doit ressembler à cela :

  1. Host serveur
  2.         Hostname  xx.xx.xxx.xx # Nom d'hôte ou adresse IP du serveur sur lequel on souhaite se connecter
  3.         ProxyCommand ssh -q yyy.yyy.yy.yyy nc %h %p # La commande à utiliser en proxy, exécutée avant la connection au serveur

Télécharger

La partie importante est l’option ProxyCommand. Elle lance une commande avant la connexion au serveur final, ici une connexion à la passerelle dont l’adresse IP ou le nom d’hôte est yyy.yyy.yy.yyy.

Cette commande a deux variables :

  • %h qui correspond au nom d’hote ou l’adresse IP défini dans l’option Hostname, la passerelle doit pouvoir accéder à ce nom d’hôte ou cette IP ;
  • %p est le port à utiliser, elle sera remplacée par l’optionPort si présente, sinon elle prendre la valeur par défaut à savoir 22 ;

On peut maintenant se connecter au serveur en utilisant la commande :

  1. ssh serveur

Cela permet notamment de simplifier énormément la commande à taper mais également la connexion en scp par exemple.

Lancer une commande directement sur le serveur

Il est très simple de lancer une commande sur un serveur distant en une ligne (utile pour toute utilisation dans un script par exemple). Il suffit de passer la commande, contenue entre deux guillemets simples à la suite de la commande de connexion comme par exemple :

  1. ssh user@serveur 'restart'

Cette commande redémarrera le serveur serveur si l’utilisateur user dispose des droits nécessaires.

Notes

[1Il est à noter que dans le cas où votre nom d’utilisateur est le même sur le serveur que sur la machine cliente, il est inutile de mettre user@ devant l’adresse IP ou le nom de domaine du serveur.

  • Auteur :
  • Publié le :
  • Mis à jour : 07/02/13

1 commentaire


Qui êtes-vous ?
[Se connecter]
Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.