Installation d’un client SSH sous linux et mise en place d’un tunnel SSH

openssh

Aujourd’hui on va voir la suite du tutoriel de la veille qui portait sur l’installation de SSH sur un serveur et l’installation d’un client windows (PuTTY) avec mise en place d’un tunnel. Tout simplement, la suite va consister à reproduire la même chose que dans ce précédent tutoriel mais avec un client linux. On va donc tout de suite passer à la partie client car il s’agit du même serveur. Je rappelle d’ailleurs pour ceux qui ne se souviendraient plus ou ceux qui n’auraient pas lu le billet précédent que nous avions changé le port d’écoute du serveur pour le passer à 19622. Maintenant que les présentations sont faites on peut commencer.

Tout d’abord on va commencer par installer un client ssh. Je suis encore sur une Debian donc pour ce qui est de l’installation sur d’autre distribution je vous laisse chercher par vous même…

apt-get install openssh-client

Et voila l’installation est finie. Maintenant on va passer à la configuration avec un système clé publique/clé privée.

Juste un rappel sur le fonctionnement d’un système à double clé : la clé publique est, comme son nom l’indique, une clé que vous pouvez partagez sans problème car elle ne permet pas de retrouver votre clé privée. Elle va servir en début de connexion SSH car le client va envoyer une clé secrète chiffrée avec la clé publique commune au serveur et au client. Puis  le serveur va pouvoir déchiffrer cette clé à l’aide de sa clé privée et envoyer un paquet au client chiffré avec la clé secrète. La boucle est bouclée et le couple serveur client va pouvoir communiquer en chiffrant tout avec la clé secrète. Voilà pour la partie théorique de la chose, on va donc voir la pratique.

Pour commencer on va générer un couple de clé avec ssh-keygen. On va utiliser l’algorythme RSA qui est très robuste et sinon on va laisser les valeurs pas défauts.

ssh-keygen -t rsa

Quand on va vous demander ou vous voulez stocker vos clés laisser les valeurs par défaut en tapant sur entrer sans indiquer de chemin, puis entrer une passphrase qui va permettre de sécuriser votre clé privée. Au cas ou elle tomberait dans de mauvaises mains il faudrait en prime que la personne connaisse votre passphrase afin de pouvoir l’utiliser. Choisissez donc une passphrase bien robuste.

génération de clé rsa

Comme indiquée dans votre terminal les clés sont stockées dans ~/.ssh et votre clé publique est id_rsa.pub tandis que votre clé privée est id_rsa. On va maintenant devoir renseigner la clé publique au serveur pour que le client puisse l’identifier comme étant le bon serveur. Pour cela il existe deux méthodes :

-soit vous pouvez copier directement le contenu de votre clé publique dans le fichier ~/.ssh/authorized_keys sur votre serveur via un éditeur de texte. Il s’agit de la version la plus simple. Je précise que le ~ correspond au dossier /home/user du compte utilisateur qui se trouve sur le serveur sur lequel on veut se connecter.

-soit vous utilisez ssh-copy-id qui va faire la même chose que la première méthode mais en passant via ssh et une authentification avec le couple login/mot de passe. Pour cela vous devez vérifier au préalable que /etc/ssh/sshd_config sur votre serveur est bien paramétré. Il faut qu’il accepte l’authentification via login/mot de passe.

nano /etc/ssh/sshd_config

et verifiez :

PasswordAuthentication yes

par défaut il est commenté sur Lenny.Ensuite pour envoyer votre clé publique au serveur vous devez faire :

ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 19622 user@ipaddress"

avec -p on indique le port sur lequel ssh écoute. Vous allez devoir authentifier le serveur avec la signature de sa clé publique contenue dans /etc/ssh/ssh_host_rsa_key en tapant yes et entrer
votre mot de passe de session correspondant à l’utilisateur.

Une fois que vous avez utilisez l’une ou l’autre méthode vous pouvez maintenant vous connectez en mode clé publique/clé privé.

ssh -p 19622 user@ipadress

connexion au serveur ssh

Si vous avez utilisez la première méthode vous allez devoir authentifier le serveur une première fois en tapant yes. Un fichier known_hosts est alors créé dans ~/.ssh sur votre pc client et vous n’aurez plus à taper yes pour authentifier le serveur. Vos allez également devoir taper la passphrase de votre clé privé pour que celle-ci puisse être utilisée. Ca y est vous êtes maintenant connecté en ssh grace à votre couple de clé.

On va maintenant voir comment automatiser le montage de la clé privée en mémoire avec ssh-add. En fait c’est très simple il suffit de taper :

ssh-add

dans votre terminal et de rentrer votre passphrase. Vous pouvez maintenant vous connectez à votre serveur SSH sans avoir à retaper la clé à chaque fois pendant toute la durée de votre session user sur le pc client. Pour automatiser la chose vous pouvez passez par un script bash que vous exécuterez au boot ou par un outil graphique comme le menu Gnome>>preferences>>session et là vous ajoutez ssh-add dans startup programs.

On va donc enfin voir comment créer un tunnel SSH, comme on l’avait fait précédemment sous windows. Pour l’exemple on va de nouveau prendre vnc que j’utilise via Terminal server client. On va donc créer un tunnel sur le port 5900.

ssh -p 18522 -L 127.0.0.1:5900:ipadress:5900 user@ipadress

On redirige le flux du port 5900 du routeur sur le localhost du client et on peut donc ouvrir en tapant 127.0.0.1 à la place de l’adresse du routeur.
Il est à noté que l’on peut également omettre 127.0.0.1 dans la ligne précédente car c’est sur localhost qu’est redirigé le flux par défaut.

ssh -p 18522 -L 5900:ipadress:5900 user@ipadress

Cette ligne fait exactement la même chose que la ligne précédente. Vous pouvez donc maintenant sécurisez un tas de protocoles comme vnc, ftp et autres qui sont de vraie passoire en cas d’attaque man in the middle.

Comme d’habitude si vous voyez quelque chose à ajouter ou corriger n’hésitez pas à me le faire savoir via les commentaires.

Laisser un commentaire