Nous avons vu dans la première partie comment se connecter au raspberry-pi en utilisant le logiciel Putty et le protocole SSH pour configurer le Raspberry-Pi. Mais qu’est-ce que c’est SSH. ?
Présentation de SSH
Beaucoup parle de SSH, pour se connecter à un système linux, pour faire un tunnel pour contourner le proxy de votre boite (non je n’ai jamais dit ça d’ailleurs vous ne trouverez pas de tutoriel pour faire ce genre de chose sur ce blog :))))) )
Sachant qu’il est hors de question d’utiliser l’interface graphique du raspberry-pi et qu’il n’y a ni clavier ni écran de connecté à celui-ci, nous devons utiliser SSH pour se connecter à distance et exécuter les diverses commandes.
Bon enfin bref ce qu’il faut savoir sur SSH
- c’est que SSH veut dire Secure Shell,
- qu’il y a une version 1.0 et 2.0,
- qu’il permet de se connecter à un ordinateur distant de façon sûre et d’avoir une ligne de commande,
- que c’est le digne successeur de Telnet (port 23) mais en version sécurisée sur le (port 22).
En prérequis nous avons besoin de:
- Avoir suivi cette première partie (Bonjour, je vous présente le Raspberry-Pi et son installation),
- Puttygen
Si vous voulez en savoir un peu plus parce que vous êtes un grand curieux je peux vous orientez vers ces différentes sources:
- http://fr.wikipedia.org/wiki/Ssh
- http://www.commentcamarche.net/contents/214-cryptographie-secure-shell-protocole-ssh
Installation
Par défaut sur un raspberry-pi, openSSH est installé donc pas besoin de s’embêter à faire l’installation.
Pour information l’installation est très compliquée:
sudo apt-get install openssh-server
Les commandes utiles :
Pour lancer le service:
sudo service ssh start
Pour arrêter le service:
sudo service ssh stop
Pour relancer le service:
sudo service ssh restart
Configuration de SSH
Dans beaucoup de tutoriels que j’ai regardé il n’y a pas grand monde qui parle de sécuriser au minimum le Raspberry-pi.
Evidement si celui-ci est sur votre réseau local il n’y a pas trop besoin, mais s’il est accessible depuis le net je pense qu’il y’a un minimum de choses à faire pour éviter quelques désagréments.
Je ne suis pas un expert en sécurité mais voici une petite liste d’action à mener.
Tout se passe dans le fichier /etc/ssh/sshd_config.
Donc pour l’éditer:
sudo nano /etc/ssh/sshd_config
Changer les différentes valeurs suivantes:
PermitRootLogin | no | Le serveur refuse que l’utilisateur et administrateur root ne se connecte en direct. |
Port | 22 | On retrouve sur quelques sites le changement de port pour le service SSH. Personnellement je ne le fais pas car si quelqu’un scan votre machine il verra les ports ouverts et essaiera d’y passer pour rentrer sur votre machine donc qu’il soit sur le 22 ou 4444 le mec tentera. |
PasswordAuthentication | no | Rend la connexion en SSH possible uniquement avec un système de clés privées, clés publiques. |
PubkeyAuthentication | yes | Permet l’authentification par clés privées, clés publiques. |
UsePAM | no | Si vous voulez désactiver le passphrase. Necessite PubkeyAuthentication à yes |
X11Forwarding | no | Désactive la partie affichage graphique déportée. |
Vous pouvez aussi définir les utilisateurs qui peuvent se connecter au SSH avec le paramètre: AllowUsers.
Il vous reste plus qu’à enregistrer et quitter le fichier.
Pour que le service SSHd prenne en compte les modifications nous pouvons utiliser cette commande:
sudo service ssh reload
Si vous en voulez un peu plus:
http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html
Ou faite un:
man ssh
Vous avez vu que nous avons désactivé le système de mot de passe, vous n’êtes pas obligé de le faire et /ou pouvez retarder la modification des paramètres PasswordAuthentication, PubkeyAuthentication et UsePAM pour ne pas être coincé si une erreur se produit lors de la manipulation de la mise en place d’une clé privée / publique pour se connecter à notre raspberry-pi.
Authentification par clé SSH
Pourquoi utiliser une clé publique/privée ?
Tout simplement pour sécuriser un peu mieux notre serveur d’un simple couple login / mot de passe.
En gros :
L’authentification par clé fonctionne grâce à 3 composants :
- Une clé publique : elle sera exportée sur chaque hôte sur lequel on souhaite pouvoir se connecter.
- Une clé privée : elle permet de prouver son identité aux serveurs.
- Une passphrase : Permet de sécuriser la clé privée (notons la subtilité, passphrase et pas password… donc « phrase de passe » et non pas « mot de passe »).
Le PC tourne sous Windows nous utiliserons donc Putty et le serveur sera le Raspberry-pi.
Générer la clé privée / publique depuis Windows avec puttyGen
L’opération n’est pas compliquée il vous suffit:
- d’exécuter puttyGen.exe,
- Cliquer sur générer,
- Bouger la souris dans le cadre jusqu’à ce la barre d’avancement verte arrive au bout.
Maintenant vous devez avoir vos 2 fichiers de générer, vous pouvez pour assurer la sécurité mettre une passphrase. Dans notre cas je n’en mettrais pas.
Vous enregistrez le fichier de clé privée et le fichier de clé publique sur votre disque.
Vous sélectionnez le contenu « Public key for past into openSSH autorized_key file »
Mise en place de la clé publique sur le serveur
Vous devez créer le répertoire « .ssh » si il n’existe pas dans votre home:
mkdir .ssh
Créer le fichier « authorized_keys« :
nano .ssh/authorized_keys
Coller le contenu que vous avez sélectionné l’étape précédente.
On applique les bons droits:
chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Utilisation avancée de Putty
Nous allons voir comment sauvegarder les paramètres de connexion dans Putty et l’auto login.
Ouvrir Putty et :
1. Mettre l’adresse IP du Raspberry-Pi
2. Donner un nom à l’enregistrement
4. Remplir l’auto login par votre login
5. Déplier SSH – 6. Se rendre Auth – 7. Faite Browse – 8. Sélectionner votre clé privée enregistrée auparavant – 9. Cliquer sur Ouvrir
11. Pour finir cliquer Open
Voilà qui est finie pour cette partie.
Bonjour,
Super tuto, en revanche comment faire pour générer les clés sous MAC OS?
Merci d’avance.
Pascal
Bonjour,
Super tuto, en revanche comment faire pour générer les clés sous MAC OS?
Merci d’avance.
Pascal
Bonjour, j’ai ce message d’erreur lorsque je lance la commande « chmod 600 ~/.ssh/authorized_keys »
root@raspberrypi:/home/pi# chmod 600 ~/.ssh/authorized_keys
chmod: cannot access ‘/root/.ssh/authorized_keys’: No such file or directory
J’ai besoin d’aide s’il vous plait
Bonjour, le fichier ne doit pas être crée.
Je n’utilises pas le root dans mon exemple, mais l’utilisateur pi, tu as du louper une étape 🙂
Bonjour, j’ai ce message d’erreur lorsque je lance la commande « chmod 600 ~/.ssh/authorized_keys »
root@raspberrypi:/home/pi# chmod 600 ~/.ssh/authorized_keys
chmod: cannot access ‘/root/.ssh/authorized_keys’: No such file or directory
J’ai besoin d’aide s’il vous plait
Bonjour, le fichier ne doit pas être crée.
Je n’utilises pas le root dans mon exemple, mais l’utilisateur pi, tu as du louper une étape 🙂
bonsoir,
et merci pour ce tuto. Je regarderais le reste de ton blog une fois le tuto fini et fonctionnel 🙂
tout fonctionne comme il faut mais j’ai une petite question:
A la toute fin, lorsque je veux ouvrir ma session possédant les clefs j’obtiens un message « Server refused our key ». et je dois donner le mot de passe de mon utilisateur.
Est-ce que c’est normal? Car dans putty j’ai l’option « display pre-autehtication banner » de cocher.
Ou alors j’ai fait de la merde avec les clefs.
Ps: Pourquoi ne pas avoir mis de passphrase, cela réduit la sécurité non?
Salut munanui,
si tu dois saisir le user et le mdp c’est les clés ne fonctionnent pas.
Tu as bien la clé publique dans le répertoire .ssh de ton user et que c’est bien celle que tu as généré avec putty ?
bonsoir,
et merci pour ce tuto. Je regarderais le reste de ton blog une fois le tuto fini et fonctionnel 🙂
tout fonctionne comme il faut mais j’ai une petite question:
A la toute fin, lorsque je veux ouvrir ma session possédant les clefs j’obtiens un message « Server refused our key ». et je dois donner le mot de passe de mon utilisateur.
Est-ce que c’est normal? Car dans putty j’ai l’option « display pre-autehtication banner » de cocher.
Ou alors j’ai fait de la merde avec les clefs.
Ps: Pourquoi ne pas avoir mis de passphrase, cela réduit la sécurité non?
Salut munanui,
si tu dois saisir le user et le mdp c’est les clés ne fonctionnent pas.
Tu as bien la clé publique dans le répertoire .ssh de ton user et que c’est bien celle que tu as généré avec putty ?