Pour pouvoir utiliser une connexion ssh sans avoir à entrer un mot de passe, nous allons créer un certificat sous forme de clef privée, clef publique.
S’il n’existe pas, créer le répertoire .ssh
mkdir $HOME/.ssh
sudo chmod 700 $HOME/.ssh
Aller dans le répertoire .ssh
cd $HOME/.ssh
Nous allons générer nos clés, -b 4096 permet d’augmenter la sécurité de votre clé au lieu de 2096 par défaut, le -C "commentaire" servira à
repérer la clef publique parmi d’autres dans le fichier ~/.ssh/authorized_keys que nous créerons plus tard sur le serveur.
ssh-keygen -b 4096 -C "pi@rasptalk-a"
La commande nous demande d’indiquer le nom du fichier dans lequel sauver les clefs:
On fait juste [ENTER] de sorte que la clef soie générée et placée dans le dossier .ssh/id_rsa
Puis je laisse la passphrase vide afin qu'il ne la demande pas
Nous voilà avec une clé privée (id_rsa) et une clé publique (id_rsa.pub)
La clé privée doit être gardée dans le répertoire .ssh et la publique est celle à mettre sur le serveur qui veut se connecter.
Il faut maintenant ajouter de la clé publique au fichier authorized_keys situé dans le dossier /home/user/.ssh du serveur:
(Le fichier authorized_keys peut contenir plusieurs clés publiques)
cat id_rsa.pub | ssh <USERNAME>@<IP-ADDRESS> 'cat >> ~/.ssh/authorized_keys'
La ligne est ajoutée au fichier ~/.ssh/authorized_keys du serveur sous la forme: ssh-rsa <LONGUE CLE CRYPTOGRAPHIQUE> commentaire
On va finir avec la modification de la configuration du service SSH: (donc en local pas sur le serveur..)
sudo nano /etc/ssh/sshd_config
On dé-commente les lignes suivantes:
PubkeyAuthentication yes
RSAAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Maintenant une dernière chose, si on veut qu'un script exécuté par root puisse aussi utiliser la connexion ssh sans mot de passe:
Pour rendre possible la connexion à partir du compte administrateur d'un raspberry, il faut définir un mdp:
sudo passwd root
puis se connecter en tant que root avec la commande:
su
Vérifier que le dossier /root/.ssh existe (s'il n'existe pas: mkdir /root/.ssh)
Donnez-lui ces droits:
chmod 700 /root/.ssh
Puis retourner dans $HOME/.ssh
cd $HOME/.ssh
Envoyer les fichiers authorized_keys et id_rsa dans /root/.ssh
cp authorized_keys /root/.ssh
cp id_rsa /root/.ssh
Enfin on redémarre ssh:
sudo service ssh restart