Contents
- 1 Intro:
- 2 Connexion SSH avec mot de passe
- 3 Vérifier que le service SSH est actif sur la machine distante
- 4 Connexion SSH sans mot de passe avec une clé SSH
- 5 Créer une clé SSH sur le PC local
- 6 Copier la clé publique sur la machine distante
- 7 Tester la connexion sans mot de passe
- 8 Simplifier la connexion avec le fichier ~/.ssh/config
- 9 Exemple avec plusieurs machines
- 10 Permissions recommandées côté PC local
- 11 Supprimer l’avertissement en cas de changement de machine
- 12 Désactiver la connexion par mot de passe
- 13 Autoriser ou non la connexion root
- 14 Commandes utiles
- 15 Résumé
Intro:
Dans un environnement domotique ou serveur maison, on passe très souvent par la console pour administrer ses machines : Home Assistant, Proxmox, TrueNAS, LXC, mini-PC, NAS, Raspberry Pi, etc.
Le protocole SSH permet de se connecter à distance à une machine Linux depuis un autre ordinateur, simplement depuis un terminal.
Dans cet article, on va voir deux méthodes :
1. Connexion SSH avec mot de passe
2. Connexion SSH sans mot de passe avec une clé SSH
L’exemple utilisé ici :
PC local : pc-bureau
Machine distante : NAS / serveur / LXC
IP distante : 192.168.0.230
Utilisateur : root ou remy
Connexion SSH avec mot de passe
Principe
La méthode la plus simple consiste à se connecter avec un utilisateur et son mot de passe.
Depuis le PC local, on ouvre un terminal puis on tape :
ssh utilisateur@adresse_ip
Par exemple, pour se connecter en root à une machine dont l’adresse IP est 192.168.0.230 :
ssh root@192.168.0.230
Ou avec un utilisateur classique :
ssh remy@192.168.0.230
Au premier accès, SSH affiche souvent un message de ce type :
The authenticity of host '192.168.0.230' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
On répond :
yes
Puis on saisit le mot de passe de l’utilisateur distant.
Si tout est correct, on arrive sur la console de la machine distante :
root@truenas230[~]#
ou :
remy@serveur:~$
Exemple complet
ssh root@192.168.0.230
Réponse possible :
The authenticity of host '192.168.0.230' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@192.168.0.230's password:
Après saisie du mot de passe, la session SSH est ouverte.
Vérifier que le service SSH est actif sur la machine distante
Si la connexion échoue, il faut vérifier que le service SSH est bien lancé sur la machine distante.
Sur une machine Debian / Ubuntu / Proxmox / LXC :
systemctl status ssh
ou selon les distributions :
systemctl status sshd
Pour l’activer au démarrage :
systemctl enable ssh
Pour le démarrer immédiatement :
systemctl start ssh
Sur TrueNAS, cela se règle depuis l’interface Web :
System Settings
→ Services
→ SSH
→ Start
→ Start Automatically
Si on veut autoriser temporairement la connexion en root, il faut aussi activer l’option correspondante dans les paramètres SSH.
Connexion SSH sans mot de passe avec une clé SSH
Principe
La méthode la plus propre consiste à utiliser une clé SSH.
Au lieu de saisir un mot de passe à chaque connexion, le PC local s’authentifie avec une paire de clés :
clé privée : reste sur le PC local
clé publique : copiée sur la machine distante
La clé privée ne doit jamais être copiée sur un serveur.
Créer une clé SSH sur le PC local
Depuis le PC bureau, on crée une clé SSH :
ssh-keygen -t ed25519 -f ~/.ssh/ha_homeassistant -C "pc-bureau"
Explication :
-t ed25519 type de clé moderne
-f ~/.ssh/ha_homeassistant nom du fichier de clé
-C "pc-bureau" commentaire pour identifier la clé
SSH demande ensuite :
Enter passphrase:
Deux possibilités :
- laisser vide : connexion automatique sans mot de passe
- mettre une passphrase : plus sécurisé, mais il faudra la saisir ou utiliser ssh-agent
Dans un réseau local personnel, pour de l’administration simple, on laisse souvent vide.
Après création, on obtient deux fichiers :
~/.ssh/ha_homeassistant clé privée
~/.ssh/ha_homeassistant.pub clé publique
On peut vérifier :
ls -l ~/.ssh/ha_homeassistant*
Copier la clé publique sur la machine distante
Pour autoriser le PC local à se connecter, on copie la clé publique sur la machine distante avec ssh-copy-id.
Exemple vers TrueNAS ou un serveur en root :
ssh-copy-id -i ~/.ssh/ha_homeassistant.pub root@192.168.0.230
Ou vers un utilisateur classique :
ssh-copy-id -i ~/.ssh/ha_homeassistant.pub remy@192.168.0.230
Le mot de passe est demandé une dernière fois.
Ensuite, la clé publique est ajoutée dans :
~/.ssh/authorized_keys
sur la machine distante.
Tester la connexion sans mot de passe
Depuis le PC local :
ssh -i ~/.ssh/ha_homeassistant root@192.168.0.230
Si tout est bon, la connexion se fait directement, sans demander le mot de passe du compte distant.
Simplifier la connexion avec le fichier ~/.ssh/config
Pour éviter de retaper l’adresse IP, l’utilisateur, le port et la clé à chaque fois, on peut créer un alias SSH.
Sur le PC local :
nano ~/.ssh/config
On ajoute par exemple :
Host tn230
HostName 192.168.0.230
User root
Port 22
IdentityFile ~/.ssh/ha_homeassistant
IdentitiesOnly yes
On enregistre, puis on protège le fichier :
chmod 600 ~/.ssh/config
Ensuite, la connexion devient très simple :
ssh tn230
Au lieu de :
ssh -i ~/.ssh/ha_homeassistant root@192.168.0.230
Exemple avec plusieurs machines
On peut déclarer plusieurs hôtes dans le même fichier ~/.ssh/config.
Exemple :
Host ha
HostName 192.168.0.200
User root
Port 22
IdentityFile ~/.ssh/ha_homeassistant
IdentitiesOnly yes
Host pve
HostName 192.168.0.201
User root
Port 22
IdentityFile ~/.ssh/ha_homeassistant
IdentitiesOnly yes
Host tn230
HostName 192.168.0.230
User root
Port 22
IdentityFile ~/.ssh/ha_homeassistant
IdentitiesOnly yes
Host tn240
HostName 192.168.0.240
User root
Port 22
IdentityFile ~/.ssh/ha_homeassistant
IdentitiesOnly yes
On peut ensuite se connecter simplement avec :
ssh ha
ssh pve
ssh tn230
ssh tn240
Permissions recommandées côté PC local
SSH est assez strict sur les permissions des fichiers.
Sur le PC bureau :
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/ha_homeassistant
chmod 644 ~/.ssh/ha_homeassistant.pub
Si les permissions sont trop ouvertes, SSH peut refuser d’utiliser la clé.
Supprimer l’avertissement en cas de changement de machine
Si une machine est remplacée mais garde la même IP, SSH peut afficher un avertissement :
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
C’est normal si, par exemple, on remplace un ancien NAS 192.168.0.230 par un nouveau NAS avec la même IP.
Pour supprimer l’ancienne empreinte :
ssh-keygen -R 192.168.0.230
Et si on utilise un alias :
ssh-keygen -R tn230
Puis on se reconnecte :
ssh tn230
SSH demandera à nouveau de valider la nouvelle empreinte :
Are you sure you want to continue connecting?
On répond :
yes
Désactiver la connexion par mot de passe
Une fois que la connexion par clé fonctionne, on peut renforcer la sécurité en désactivant l’authentification par mot de passe.
Sur une machine Debian / Ubuntu / Proxmox / LXC, éditer :
nano /etc/ssh/sshd_config
Chercher ou ajouter :
PasswordAuthentication no
PubkeyAuthentication yes
Puis redémarrer SSH :
systemctl restart ssh
Attention : avant de faire cela, il faut impérativement vérifier que la connexion par clé fonctionne dans un autre terminal.
Test :
ssh tn230
Si ça marche, on peut désactiver le mot de passe.
Autoriser ou non la connexion root
Sur un serveur personnel, on utilise souvent root pour les machines d’administration comme Proxmox ou TrueNAS. Mais ce n’est pas toujours idéal.
Dans /etc/ssh/sshd_config, l’option importante est :
PermitRootLogin
Valeurs possibles courantes :
PermitRootLogin yes
Autorise root avec mot de passe ou clé.
PermitRootLogin prohibit-password
Autorise root uniquement avec clé SSH, pas avec mot de passe.
PermitRootLogin no
Interdit totalement la connexion SSH directe en root.
Pour un usage maison, un bon compromis est :
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
Ainsi, root peut se connecter uniquement avec une clé SSH.
Commandes utiles
Connexion simple
ssh root@192.168.0.230
Connexion avec une clé précise
ssh -i ~/.ssh/ha_homeassistant root@192.168.0.230
Connexion avec alias
ssh tn230
Copier une clé publique
ssh-copy-id -i ~/.ssh/ha_homeassistant.pub root@192.168.0.230
Supprimer une ancienne empreinte SSH
ssh-keygen -R 192.168.0.230
Vérifier le service SSH
systemctl status ssh
Redémarrer SSH
systemctl restart ssh
Résumé
La connexion SSH avec mot de passe est simple pour démarrer :
ssh root@192.168.0.230
Mais pour une administration régulière, la connexion par clé SSH est plus pratique :
ssh-keygen -t ed25519 -f ~/.ssh/ha_homeassistant
ssh-copy-id -i ~/.ssh/ha_homeassistant.pub root@192.168.0.230
ssh root@192.168.0.230
Avec un alias dans ~/.ssh/config, la connexion devient encore plus simple :
ssh tn230
C’est la méthode idéale pour administrer proprement ses machines depuis un PC bureau : Proxmox, Home Assistant, TrueNAS, LXC, mini-PC ou NAS maiso
