Bonjour,
Petit Tuto rapide pour gérer simplement la configuration SSH coté client pour accéder en mode console à vos serveurs avec échanges de clés.
Le but est d'avoir une seule règle pour accéder à tous vos serveurs SSH.
1) Préambule
2) Configuration optimale avec échange de clés
3) Configuration coté serveur
4) Exemple utilisation
5) NB : Création des clés
6) Utilisation avec Dolphin
1) Préambule
Par défaut le fichier de configuration 'config' du client SSH se trouve dans le répertoire .ssh, à la racine de votre répertoire utilisateur /home
Dans ce même répertoire se trouve aussi vos clés publiques et privés générés localement (cas standard, voir plus loin).
Ce fichier de configuration est optionnel, mais il vous facilite bien la vie quand vous gérer plusieurs serveurs SSH.
2) Configuration optimale avec échange de clés
Voici ma config avec un seul bloc pour accéder à tous mes serveurs en SSH avec une seule règle. Je vais utiliser un nom de domaine locale pour accéder à mes serveurs. Libre à vous de déclarer les URL de vos machines au niveau de votre dns local ou de votre fichier /etc/hosts
On vas s'arrêter dessus quelques minutes pour le détailler :
- Host : c'est l'alias en quelque sorte qui définit votre bloc. Vous pourrez vous connecter directement a votre serveur avec cet alias :
Remarque : ici, j'utilise une '*' pour indiquer que l'alias est dynamique et peut être n'importe quoi
- HostName : les deux caractères '%h' (hôte destinataire) indique que j'utilise l'alias du Host pour former mon url.
- User : l'utilisateur qui se connectera en SSH
- Port : Le port qui n'est pas standard
- IdentityFile : Indique le chemin de la clé privée. Ma clé devra donc se nommer 'alias.yannick.lan' (alias.yannick.lan.pub ici car je ne garde que la clé publique)
Remarque : J'utilise ici une subtilité de ssh-agent couplé avec mon coffre fort numérique pour ne garder que la clé publique localement. La clé privée est quant a elle dans mon coffre fort numérique et je l'ai supprimé localement après l'avoir créer.
- IdentitiesOnly : Indique que l'on peut se connecter qu'avec un échange de clé
- StrictHostKeyChecking : indique que je n'accepte que les connexions avec les serveurs distants enregistrées dans le fichier local 'known_hosts' (se trouve dans le même répertoire .ssh)
Remarque : Je devrais donc au préalable faire un premier 'ssh yannick@alias.yannick.lan -p 1122' pour enregistrer le serveur dans le fichier 'known_hosts'.
Attention : vous devez utilisez exactement le même HostName lors de l'enregistrement. Si vous utilisez par exemple son adresse IP à la place de son nom de domaine, la connexion par alias sera refusée.
3) Configuration coté serveur :
J'ai le même fichier de configuration sur tous mes serveurs. Même chose que le coté client; il n'accepte que les connexion par échange de clés.
Il n'autorise les accès que venant de mon PC.
Le fichier se trouve dans /etc/ssh/sshd_config.d/
Il faudra aussi copier la clé publique dans le fichier 'authorized_keys' du répertoire .ssh de l'utilisateur sur le serveur.
Faire un 'chmod 400 authorized_keys' et un 'chmod 700 .ssh'
4) Exemple utilisation :
J'ai par exemple une machine qui s'appel "apache" et l'autres "jellyfin"
J'y accéderais donc en tapant simplement : ssh apache et ssh jellyfin.
5) NB : Création des clés :
J'utilise cette commande ci avec OpenSSH pour générer mes clés :
J'utilise l'algo 'ed25519' qui génère une clé plus courte mais qui est considéré comme plus sur que le RSA.
L'option -N "password" est optionnelle. Elle rajoute une "passphrase" pour le chiffrage/décryptage de la clé. Elle est gérée automatiquement par mon coffre fort. Si pas de mot de passe, vous devez passez une chaîne vide : -N "".
6) Utilisation avec Dolphin
Pour ouvrir une session SFTP avec Dolphin (cela devrait être pareil avec Nautilus), nous pouvons aussi utilisez les alias tel que définit dans le post initial.
Prenons l'exemple d'un host alias qui héberge un serveur web alias qui se trouve dans /var/www :
Petit Tuto rapide pour gérer simplement la configuration SSH coté client pour accéder en mode console à vos serveurs avec échanges de clés.
Le but est d'avoir une seule règle pour accéder à tous vos serveurs SSH.
1) Préambule
2) Configuration optimale avec échange de clés
3) Configuration coté serveur
4) Exemple utilisation
5) NB : Création des clés
6) Utilisation avec Dolphin
1) Préambule
Par défaut le fichier de configuration 'config' du client SSH se trouve dans le répertoire .ssh, à la racine de votre répertoire utilisateur /home
Dans ce même répertoire se trouve aussi vos clés publiques et privés générés localement (cas standard, voir plus loin).
Ce fichier de configuration est optionnel, mais il vous facilite bien la vie quand vous gérer plusieurs serveurs SSH.
2) Configuration optimale avec échange de clés
Voici ma config avec un seul bloc pour accéder à tous mes serveurs en SSH avec une seule règle. Je vais utiliser un nom de domaine locale pour accéder à mes serveurs. Libre à vous de déclarer les URL de vos machines au niveau de votre dns local ou de votre fichier /etc/hosts
On vas s'arrêter dessus quelques minutes pour le détailler :
Code:
Host *
HostName %h.yannick.lan
User yannick
Port 1122
IdentityFile /home/yannick/.ssh/%h.pub
IdentitiesOnly yes
StrictHostKeyChecking yes
- Host : c'est l'alias en quelque sorte qui définit votre bloc. Vous pourrez vous connecter directement a votre serveur avec cet alias :
Code:
ssh alias
Remarque : ici, j'utilise une '*' pour indiquer que l'alias est dynamique et peut être n'importe quoi
- HostName : les deux caractères '%h' (hôte destinataire) indique que j'utilise l'alias du Host pour former mon url.
- User : l'utilisateur qui se connectera en SSH
- Port : Le port qui n'est pas standard
- IdentityFile : Indique le chemin de la clé privée. Ma clé devra donc se nommer 'alias.yannick.lan' (alias.yannick.lan.pub ici car je ne garde que la clé publique)
Remarque : J'utilise ici une subtilité de ssh-agent couplé avec mon coffre fort numérique pour ne garder que la clé publique localement. La clé privée est quant a elle dans mon coffre fort numérique et je l'ai supprimé localement après l'avoir créer.
- IdentitiesOnly : Indique que l'on peut se connecter qu'avec un échange de clé
- StrictHostKeyChecking : indique que je n'accepte que les connexions avec les serveurs distants enregistrées dans le fichier local 'known_hosts' (se trouve dans le même répertoire .ssh)
Remarque : Je devrais donc au préalable faire un premier 'ssh yannick@alias.yannick.lan -p 1122' pour enregistrer le serveur dans le fichier 'known_hosts'.
Attention : vous devez utilisez exactement le même HostName lors de l'enregistrement. Si vous utilisez par exemple son adresse IP à la place de son nom de domaine, la connexion par alias sera refusée.
3) Configuration coté serveur :
J'ai le même fichier de configuration sur tous mes serveurs. Même chose que le coté client; il n'accepte que les connexion par échange de clés.
Il n'autorise les accès que venant de mon PC.
Le fichier se trouve dans /etc/ssh/sshd_config.d/
Code:
Port 1122
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 2m
PermitRootLogin no
AllowGroups ssh
AllowUsers yannick@192.168.xx.xx
PermitEmptyPasswords no
StrictModes yes
MaxAuthTries 6
MaxSessions 10
Match user yannick
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
Match all
X11Forwarding no
Il faudra aussi copier la clé publique dans le fichier 'authorized_keys' du répertoire .ssh de l'utilisateur sur le serveur.
Faire un 'chmod 400 authorized_keys' et un 'chmod 700 .ssh'
4) Exemple utilisation :
J'ai par exemple une machine qui s'appel "apache" et l'autres "jellyfin"
J'y accéderais donc en tapant simplement : ssh apache et ssh jellyfin.
5) NB : Création des clés :
J'utilise cette commande ci avec OpenSSH pour générer mes clés :
Code:
ssh-keygen -t ed25519 -C "alias@alias.yannick.lan" -N "passwd" -f /home/yannick/.ssh/alias
J'utilise l'algo 'ed25519' qui génère une clé plus courte mais qui est considéré comme plus sur que le RSA.
L'option -N "password" est optionnelle. Elle rajoute une "passphrase" pour le chiffrage/décryptage de la clé. Elle est gérée automatiquement par mon coffre fort. Si pas de mot de passe, vous devez passez une chaîne vide : -N "".
6) Utilisation avec Dolphin
Pour ouvrir une session SFTP avec Dolphin (cela devrait être pareil avec Nautilus), nous pouvons aussi utilisez les alias tel que définit dans le post initial.
Prenons l'exemple d'un host alias qui héberge un serveur web alias qui se trouve dans /var/www :
Code:
fish://alias/var/www/alias
Dernière édition par un modérateur: