1- Utilité de OpenSSH ?
La plus part du temps, dans un environnement de production, les applications sont déployées sur des serveurs distants (qui ne sont pas dans les mêmes locaux). De plus aucune interface graphique n'est mise à disposition. Tout ce fait en ligne de commande.
Pour dialoguer avec la machine distante on utilise le protocole SSH qui assure une communication chiffrée donc sécurisée. OpenSSH est une version libre de ce protocole.

2- Installation de OpenSSH sur Ubuntu
Dans un premier temps nous installons le serveur OpenSSH sur Ubuntu. La documentation sur le site francophone d'Ubuntu explique la procédure : http://doc.ubuntu-fr.org/ssh.

Basiquement, il suffit d'installer le paquet openssh-server avec la commande suivante :

sudo apt-get install openssh-server

La commande sudo permet d'être en administrateur (le mot de passe va être demandé).
La commande apt-get install permet d'installer un ou des paquets.

A la fin de l'installation le serveur ssh se lance automatiquement (de même au démarrage de la machine virtuelle). Pour savoir si le serveur est bien démarré, on peut taper la commande suivante :

netstat -an | grep ssh

Normalement on obtient le résultat suivant : une ligne indiquant que le serveur ssh écoute (listenning) :
unix 2 ACC STREAM LISTENING 13164 /tmp/keyring-qPsOPP/ssh

La commande netstat permet de connaître l'état des connexions.
Avec le symbole | (pipe) on redirige la sortie de cette commande vers l'entrée de la commande grep.
La commande grep permet de filtrer les résultats en fonction d'une chaîne de caractère (ici ssh).

Si le serveur a besoins d'être arrêter, démarrer ou redémarrer, les commandes suivantes sont à votre disposition :

sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
sudo /etc/init.d/ssh restart



Détail : dans ce tutoriel, nous utiliserons une authentification par mot de passe (il faudra fournir un mot de passe lorsqu'on se connectera au serveur ssh). Il est aussi possible de réaliser une authentification par clé publique. (cette partie est abordée sur http://doc.ubuntu-fr.org/ssh.

3- Installation de Putty sur Windows
Jusqu'ici nous avons travaillé dans la machine virtuelle. Nous allons maintenant installer un client ssh sur windows, à savoir Putty.

Le téléchargement de putty.exe se fait sur http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html.
On exécute putty.exe et nous créons notre première session, en sachant que le serveur ssh est sur la machine en locale et qu'il écoute sur le port 22 (port par défaut du ssh). On nomme cette session "ssh ubuntu" et on la sauvegarde pour pouvoir la recharger à volonté : Putty session ssh ubuntu

On clique sur "Open" pour se connecter au serveur ssh et nous obtenons une belle erreur "Network Error" ! C'est normal, il ne faut pas s'inquiéter.
En réalité lorsqu'une machine virtuelle Guest est lancée, elle se situe dans son propre réseau. Donc du point de vue de la machine Host, elle n'est pas visible. Nous allons donc modifier la configuration de la machine virtuelle pour rediriger des connections spécifiques.
Avant cela, on éteint Ubuntu.

4-Modification de la configuration de la machine virtuelle
Pour modifier la configuration, on crée un fichier .bat : setup_conf_virtualBox.bat, dont le contenu est le suivant :

set VM="Ubuntu 8.04.1"
set HostPort=2222
set GuestPort=22
set NomMapping=ssh
set Device=pcnet
C:
cd C:\Program Files\Sun\xVM VirtualBox
REM Pour supprimer ce mapping il suffit de lancer chacune de ces trois commandes sans le dernier argument
REM Ne pas oublier de redémarrer l'OS hôte pour que ces modifs soient prises en compte
REM Config ssh port 2222 -> 22
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/HostPort" %HostPort%
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/GuestPort" %GuestPort%
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/UDP" 0
REM Visualiser la conf
VBoxManage getextradata %VM% enumerate
pause

Cette configuration permet de rediriger les connections sortantes du port 2222 de la machine Host vers le port 22 de la machine Guest (serveur ssh sur ubuntu).

Explications des différentes lignes :

  • set VM="Nom de la machine virtuelle" : on crée la variable VM où on stocke le nom de la machine virtuelle
  • on crée les variables HostPort et GuestPort
  • on donne un nom à notre mapping. Par exemple ssh.
  • Puis on se déplace dans le dossier d'installation de VirtualBox : C:

cd C:\Program Files\Sun\xVM VirtualBox

  • Les 3 lignes successives "VBoxManage setextradata..." permettent de réaliser ce tunnel.
  • VBoxManage getextradata %VM% enumerate : montre la configuration de la machine virtuelle.

Il faut bien évidemment adapter ce script à votre environnement en modifiant le nom de la VM et le chemin vers VirtualBox. On peut alors lancer le script.

Si vous souhaitez supprimer le tunnel vers le port 22, il suffit de relancer le script en enlevant les derniers arguments des 3 commandes centrales :

...
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/HostPort" 
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/GuestPort"
VBoxManage setextradata %VM% "VBoxInternal/Devices/%Device%/0/LUN#0/Config/%NomMapping%/UDP"
...



Une fois la configuration de la machine virtuelle effectuée, on la redémarre.

5-Modification de la session dans putty
On load notre session et au lieu d'utiliser le port 22, on utilise le port 2222. On sauvegarde la session.
On clique sur Open. On clique sur Yes pour accepter le message de sécurité.
On doit alors donner un login et un mot de passe (les mêmes que ceux utilisés pour se connecter à la machine Guest)
Au final nous avons une console sous Windows nous permettant de contrôler, gérer, administrer notre distribution Ubuntu en lignes de commande. Putty console ssh ubuntu

Pour tester on peut par exemple exécuter à nouveau la commande

darkmarmotte@darkmarmotte:~$ netstat -an | grep ssh

Et nous obtenons le même résultat que tout à l'heure !

Il peut y avoir des problèmes d'accents dans la console ouverte. Pour régler ça :

  • fermer la console
  • loader la session enregistrée
  • à gauche, aller dans Window/Translation et sélectionner UTF-8 au lieu de ISO-xxx
  • à gauche, aller dans Session et cliquer sur Save.
  • On peut alors ré-ouvrir une console



On arrête Ubuntu et on crée un autre instantané.

6-Alternative à putty : Cygwin
Un autre moyen de se connecter en ssh avec Windows est d'utiliser Cygwin. Voir ce tutoriel pour l'installation.

Une fois la console lancée, on tape :

 ssh darkmarmotte@127.0.0.1 -p 2222

darkmarmotte étant le login, 127.0.0.1 l'adresse IP de la machine "distante" et 2222 le port.

7-La suite...
Dans le prochain tutoriel nous verrons comment installer java et tomcat sur la distribution Ubuntu.