SSH - accéder à distance à un shell
Cet article présente comment accéder à distance à un shell ainsi que la mise en place d’une connexion sécurisée entre un client et un serveur.
Pour s’authentifier, il existe 2 méthodes :
- Avec un nom d’utilisateur et un mot de passe
- En utilisant la cryptographie asymétrique
Lors de la 1ère connexion :
- Le client s’authentifie auprès du serveur, généralement avec son nom d’utilisateur / mot de passe
- Le serveur s’authentifie auprès du client, pour éviter une attaque Man in the middle(MITM)
Introduction
Installation
- Serveur SSH / Ordinateur distant :
sudo apt install openssh-server
- Client SSH / Ordinateur local
sudo apt install openssh-client
Commande
ssh [options] [user@]host [commande]
host- Adresse IP ou nom de domaine de la machine distanteuser- c’est le compte utilisateur sur la machine distante (si différent de la machine locale)command- Si rien n’est indiqué, c’est un shell qui est lancé sur la machine distance. Le paramètre command permet de spécifier l’action à exécuter.
Quelques autres options
-
-p port - permet de spécifier le port sur la machine distante, par défaut c’est le port 22.
-
-v, -vv, -vvv - pour afficher les messages générés par la commande, peut aider à résoudre des bugs.
Connexion
ssh username@server
Documentation avec Infomaniak :
www.infomaniak.com - se-connecter-en-ssh-et-utiliser-des-commandes-en-ligne
Cryptographie asymétrique
Résumé des étapes
- Générer une paire de clé SSH
- Configurer les fichiers et les répertoires
- Copier la clé sur le serveur distant
Générer une paire de clé ssh
ssh-keygen- Exemple avec RSA :
ssh-keygen -t rsa
- Exemple avec RSA :
- Option -b pour spécifié une longueur :
ssh-keygen -b 2048 -t rsa - Les fichiers générés sont :
- clé privée sans extension
- clé publique avec l’extension .pub
Remarques :
-
On peut choisir de protéger ou non la clé par une passphrase
-
Par défaut, la paire de clé est stocké dans le répertoire personnel de l’utilisateur :
~/.ssh
Configuration
Sur le client
cd ~
mkdir .ssh
chmod go-rwx .ssh
cd .ssh
touch config
chmod go-rwx config
Sur le serveur
cd ~
mkdir .ssh
chmod go-rwx .ssh
cd .ssh
touch authorized_keys
chmod go-rwx authorized_keys
Copier la clé sur le serveur distant
ssh-copy-id
Sur Linux, on peut utiliserssh-copy-id pour copier la clé et l’ajouter directement à
~/.ssh/authorized_keys
ssh-copy-id user@hostname
Autres possibilités
- Se connecter avec SSH sur la machine distante (demande le mot de passe)
- taper
cat >> ~/.ssh/authorized_keys - copier/coller la clé (terminer par Ctrl-D).
- taper
- Avec la commande
scp
Celle-ci permet de transférer des fichiers de la machine locale au serveur :
scp ~/.ssh/id_rsa.pub user@host
Puis il faut se connecter sur la machine distante et ajouter la clé
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
Création d’un alias
La création d’un alias permet d’éviter de devoir se rappeler de son utilisateur, des hosts, etc.
alias mon-alias = 'ssh user@host'
source ~/.bash_aliases
Il suffit ensuite de taper la commande mon-alias pour initier une connexion
Source : www.better.dev/how-to-create-an-ssh-shortcut
Source
- Cours d’Administration système enseigné à l’HEIG-VD en 2021
- Cours d’Administration IT enseigné à l’HEIG-VD en 2021
- Man ssh-keygen : https://linux.die.net/man/1/ssh-keygen
- SSH shortcut client :