Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

Tag - connexion ssh

Fil des billets - Fil des commentaires

mercredi 17 mai 2017

Simplifier vos connexions ssh avec ssh_config

Pour se connecter à une machine, virtuelle ou non, en ssh, on a besoin de spécifier au moins:

  • le nom d'hôte
  • le nom d'utilisateur

et parfois aussi

  • le port d'écoute du serveur ssh
  • certaines variables d'environnement
  • ...

Et c'est parfois long.

C'est oublier que tous ces paramètres passés sur la ligne de commande peuvent aussi être définis dans un fichier pour chaque machine à laquelle on se connecte.

Ce fichier est .ssh/config et a le format suivant:

host@machine:~$ cat .ssh/config 

Host vm-test
    Hostname 192.168.0.1
    Port 2222
    User debian
    SendEnv LANG LC_* HOST_IP

Le mot clé Host définit les paramètres de connexion à l'hôte en question et chaque paramètre suit indenté par quatre espaces.

De cette façon, se connecter à cet hôte se limite à:

ssh vm-test

C'est quand même plus rapide comme cela. Et il faut admettre que la façon de déclarer les Host est simplissime.

ssh comprend énormément de paramètres dans ce fichier config, pour tous les lister:

man ssh_config

jeudi 27 avril 2017

Machine Virtuelle, réseau NAT et redirection de ports

Quand on crée une machine virtuelle avec VirtualBox, le réseau créé par défaut est de type NAT.

Avec le réseau NAT, dans lequel aucune configuration n'est nécessaire, on peut naviguer sur Internet, lire les mails et de manière générale les applications de la machine virtuelle ont accès au réseau.

Dans ce mode réseau, le moteur réseau de VirtualBox agit comme un routeur qui dirige le traffic depuis et vers la machine virtuelle sans configuration de votre part. Chaque machine virtuelle a certes accès au réseau mais pas aux autres machines virtuelles ni à la machine hôte. La machine virtuelle en mode NAT est donc comme dans un réseau privé, connectée au réseau mais invisible de l'extérieur, y compris de sa machine hôte.

On peut s'en convaincre facilement avec la commande ping depuis la machine virtuelle vers la machine hôte et inversement: la VM voit la machine hôte mais l'inverse n'est pas vrai.

Mais alors, si la machine hôte ne voit pas la machine virtuelle, comment faire par exemple pour se connecter en ssh à la machine virtuelle depuis la machine hôte ? De la même façon qu'avec un routeur: en utilisant la redirection de ports.

On va donc configurer le moteur réseau de VirtualBox pour que les connexions sur le port 2222 de la machine hôte soient redirigées sur le port 22 de la machine virtuelle comme ceci:

Capture-Regles_de_redirection_de_ports-1.png

Il ne me reste plus qu'à me connecter à la machine virtuelle comme ceci:

ssh -p 2222 debian@192.168.0.1

Vous noterez que j'ai choisi un port d'écoute d'une valeur supérieure à 1024 (2222) puisque le moteur de VirtualBox se met à l'écoute sur la machine hôte sans avoir les droits administrateurs. Utiliser un port inférieur à 1024 aurait échoué.

Si maintenant je souhaite accéder à un serveur Web démarré sur la machine virtuelle, il faut effectuer une deuxième redirection de port, et ainsi de suite.

dimanche 19 mars 2017

Transmettre une variable d'environnement à une connexion ssh

J'ai besoin pour faire des tests de connaitre l'adresse IP de l'hôte qui héberge une machine virtuelle.

Comme je me connecte à cette machine virtuelle par ssh, je vais lui transmettre cette adresse IP via une variable d'environnement.

Pour cela, j'ai besoin de spécifier le nom de la variable d'environnement coté hôte. On l'appelera HOST_IP.

Cela peut se faire de deux façons:

Dans le fichier /etc/ssh/ssh_config via la directive:

SendEnv HOST_IP

En fait on changera la ligne existante:

SendEnv LANG LC_*

en

SendEnv LANG LC_* HOST_IP

On peut aussi spécifier le nom de la variable sur la ligne de commande ssh:

ssh -o SendEnv=HOST_IP user@machine...

Pour que cela fonctionne, il faut maintenant que la machine virtuelle accepte cette variable d'environnement.

Pour cela on changera dans le fichier /etc/ssh/sshd_config de la VM la ligne:

AcceptEnv LANG LC_*

en

AcceptEnv LANG LC_* HOST_IP

Et on redémarre le serveur ssh.