Comment établir une connexion sécurisé à distance avec ssh (2 Machines sont nécessaire pour ce test, elles doivent pouvoir communiquer entre elles et posséder une connexion internet) Machine1, qui doit être prise en main à distance : Tout d abord j installe le paquet openssh-server avec la commande apt-get install openssh-server Après l installation je génère une paire de clés asymétriques avec la commande ssh-keygen Puis je vérifie que la paire de clés (id_rsa et id_rsa.pub) se trouvent bien dans le répertoire /root/.ssh Je déplace les deux fichiers de la paire de clés dans le répertoire /etc/ssh/ Puis dans le répertoire /etc/ssh j édite le fichier de configuration du service ssh,à savoir sshd_config, avec la commande nano sshd_config Dans ce fichier je dois modifier les lignes suivantes :
HostKey /etc/ssh/ssh_host_rsa_key par : HostKey /etc/ssh/id_rsa Afin d utiliser la clé privé que j ai généré. Je dois aussi supprimer les autres lignes commençant par HostKey. Une dernière vérification s impose, je dois vérifier si la ligne PermitRootLogin est bien suivi d un yes. J enregistre le fichier et je relance le démon SSH avec la commande /etc/init.d/ssh restart Machine2, qui doit prendre le control à distance de la Machine1 : J installe le paquet openssh-server avec la commande apt-get install openssh-server Puis pour pouvoir prendre le control de la machine1 je lance la commande suivante : ssh utilisateur@adresse_ip root@192.168.1.4 Le serveur-ssh m envoie sa clé publique. Je Confirme que cette clé publique est bien la bonne. Cette confirmation va enregistrer la clé publique du «serveur-ssh» dans mon fichier ~/.ssh/known_hosts sur ma machine2. Cela évitera d'avoir à faire cette vérification lors des connexions ultérieures. Nous sommes maintenant connecté sur la machine1 depuis la machine2. La commande who me permet de voir qui est actuellement connecté sur la machine1 Pour fermer la session il faut lancer la commande exit.
Changement de clé : Sur la machine1 : Je génère une nouvelle paire de clés et l installe dans le service ssh comme précédemment : Sur la machine2 : J essaie de me connecter à la machine1 via le service ssh Comme la machine2 a mémorisé la clé publique elle refuse de se connecter, croyant à une usurpation d'identité du serveur (attaque de type «man in the middle»). Comme les clés publiques sont mémorisées dans le fichier ~/.ssh/known_hosts de l utilisateur, je dois éditer ce fichier et supprimer la clé publique qui appartient à l ancienne paire de clés, qui est actuellement obsolète. J enregistre le fichier et je tente une nouvelle fois la connexion ssh vers la machine1
La machine1 me renvoi une nouvelle clé publique : Utilisation de ssh pour copier des fichiers d'une machine à une autre : Grâce à la commande «scp» (Secure CoPy), je peux copier des fichiers d'une machine à une autre en assurant un transfert crypté des éléments copiés. Sur la machine2: Je créer un fichier fichieracopier sur la machine2 et je copie ce fichier vers la machine1 grâce à la commande suivante : Je dois entrer le mot de passe de la machine distante pour valider le transfert. Sur la machine1: Je vérifie si le fichier en question à bien été copié avec la commande ls :
Utilisation de ssh pour lancer une commande sur une machine distante : Le ssh permet aussi de lancer une commande depuis le client ssh vers le serveur ssh La syntaxe est la suivante : ssh utilisateur@adresse_machine commande Par exemple je peux demander un ifconfig avec la commande suivante : ssh root@192.168.1.4 ifconfig Le serveur ssh (machine1) me demande le mot de passe.
Utilisation de ssh avec une paire de clés pour identifier le client : Sur la machine2 : Je crée une paire de clés avec la commande ssh-keygen et je copie ma clé publique à savoir id_rsa.pub sur le serveur ssh (machine1) avec la commande scp dans le répertoire /root/.ssh/authorized_keys. La clé publique de la machine2 permet, si on la place dans le fichier authorized_keys du serveur ssh distant, de me connecter à la machine1 sans avoir à rentrer le mot de passe de celle-ci à chaque ouverture de session. Comme prévu aucun mot de passe n est demandé.