Se connecter en SSH à une machine distante depuis un PC Linux

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *