Le protocole SSH est conçu pour fournir des communications cryptées sécurisées entre deux ordinateurs (hÎtes) non approuvés sur un réseau non sécurisé.
Le protocole S/SH (pour Secure** SHell) est une méthode permettant d'envoyer des commandes de maniÚre sécurisée à un ordinateur via un réseau non sécurisé.
SSH utilise la cryptographie pour authentifier et chiffrer les connexions entre les appareils. SSH permet Ă©galement le « tunneling », ou la redirection de port, qui permet aux paquets de donnĂ©es de traverser des rĂ©seaux quâils ne pourraient pas traverser autrement. SSH est souvent utilisĂ© pour contrĂŽler les serveurs Ă distance, pour gĂ©rer lâinfrastructure et pour transfĂ©rer des fichiers. Les connexions X11, les ports TCP arbitraires et les sockets du domaine UNIX peuvent Ă©galement ĂȘtre transfĂ©rĂ©s via le canal sĂ©curisĂ©.
Contexte
Ce billet se limite Ă la prise de main Ă distance Ă lâaide de ssh.
La machine est Ă lâorigine de la communication ssh utilisera le programme ssh
. Câest le client SSH est un programme permettant de se connecter Ă une machine distante et dâexĂ©cuter des commandes Ă distance. Sur les systĂšmes Linux, la commande ssh (le client) est gĂ©nĂ©ralement prĂ©sent par dĂ©faut.
La machine recevant la communication, doit exĂ©cuter le serveur SSH ou dĂ©mon SSH (sshd). La partie serveur nâest pas toujours prĂ©sente par dĂ©faut, regardons lâinstallation de sshd
Ă partir du paquet OpenSSH.
Installer le serveur SSH sur votre machine, vous permettra de prendre Ă distance une machine sous Linux, depuis un autre ordinateur.
Installation de sshd
Ces opĂ©rations doivent se faire sur la machine distante, et par consĂ©quent avant dâavoir besoin dây accĂ©der Ă distance.
Installation :
sudo apt-get update &&
sudo apt-get install -y openssh-server
Vérifier que le démon ssh est activable et activé :
systemctl is-enabled ssh ; systemctl is-active ssh
Si ce nâest pas le cas, vous lâactiver Ă lâaide de :
sudo systemctl enable ssh
et le démarrer :
sudo systemctl start ssh
Pour vĂ©rifier lâĂ©tat du service utilisez :
systemctl status ssh
systemctl is-enabled ssh ; systemctl is-active ssh
Si vous avez un pare-feu personnel sur cette machine, vous devez autoriser lâutilisation du port 22. Câest le port par dĂ©faut utiliser par ssh.
Dans le cas de ufw
, voici comment configurer cela :
sudo ufw allow 22/tcp
Plus d'informations sur la configuration du pare-feu [EN]
Vous pouvez faire un test rapide pour voir si vous pouvez au moins joindre le service sshd
dans un premier temps depuis le serveur lui-mĂȘme, puis depuis une machine distante.
Pour utiliser le mĂȘme utilisateur sur le serveur que sur le client :
ssh <REMOTE_MACHINE_IP>
Pour utiliser un utilisateur différent sur le serveur que sur le client :
ssh <USER>@<REMOTE_MACHINE_IP>
Si un mot de passe est demandĂ©, vous pouvez annuler lâopĂ©ration simplement avec (CTRL + c) : tout va bien. Sinon, vĂ©rifiez les Ă©tapes prĂ©cĂ©dentes.
Effectuer une connexion à distance :
Nous appellerons la machine locale ou machine cliente, lâordinateur sur lequel vous ĂȘtre physiquement, et la machine distante ou machine serveur, lâordinateur sur lequel vous souhaitez travailler.
Pour utiliser pleinement le protocole ssh, je vous conseille de vous créer une paire de clé, celle-ci devra se trouver sur la machine locale.
Ensuite sur la machine distante, vous devrez dĂ©finir lâapprobation de cette clĂ© (en donnant votre clĂ© publique).
Création de la paire de clés ssh
Notez que si vous souhaitez mettre en place cela pour plusieurs utilisateurs, vous devrez répéter cette opération sur chaque compte utilisateur.
Voir le billet: đ Comment crĂ©er une paire de clĂ©s pour ssh en 2024
Si vous trouvez le billet trop compliqué, utilisez cela :
ssh-keygen -a 100 -t ed25519 -C "${USER}@${HOSTNAME}.$( date +'%Y-%m' )" -f "${HOME}/.ssh/id_ed25519" -N ''
On ne rentre pas ici dans le dĂ©tail permettant dâutiliser plusieurs clĂ©s, ni comment protĂ©ger vos clĂ©s par un mot de passe.
Sécurisation de votre répertoire ~/.ssh
Si vous venez de créer une clée ssh, il est probable que ces lignes ne soient pas nécessaires, la commande ssh-keygen ayant déjà fait ce travail.
Sur toutes les machines clientes ou serveurs vous devez avoir un dossier ~/.ssh
(donc par utilisateur étant concerné par les accÚs ssh)
mkdir -p ~/.ssh
chown -R "${USER}" ~/.ssh # Sâassure que le dossier appartient Ă lâutilisateur courant
chmod 700 ~/.ssh # Le 700 nâest pas nĂ©cessaire, mais câest le plus simple Ă gĂ©rer.
Configuration des machines clientes
Si vous venez de créer une clée ssh, il est probable que ces lignes ne soient pas nécessaires, la commande ssh-keygen ayant déjà fait ce travail.
Sur les machines clientes vous devez avec les fichiers ~/.ssh/id_ed25519
et ~/.ssh/id_ed25519.pub
, généré par la commande ssh-keygen
décrite ci-dessus.
Il faut absolument que votre clé privée ne soit accessible que par vous :
chown "${USER}" ~/.ssh/id_ed25519 # Sâassure que le fichier appartient Ă lâutilisateur courant
chmod 600 ~/.ssh/id_ed25519 # Sâassure que le fichier nâest visible que par lâutilisateur courant
Configuration des machines serveurs
Sur les machines serveurs, la configuration se trouve Ă©galement sous chaque dossier utilisateur, dans le dossier ~/.ssh
.
(rappel de ce qui a été vu plus haut)
mkdir -p ~/.ssh
chown -R "${USER}" ~/.ssh # Sâassure que le dossier appartient Ă lâutilisateur courant
chmod 700 ~/.ssh # Le 700 nâest pas nĂ©cessaire, mais câest le plus simple Ă gĂ©rer.
Sur les machines serveurs, vous devez configurer le lien dâapprobation :
touch ~/.ssh/authorized_keys # CrĂ©ation du fichier sâil nâexiste pas
chown "${USER}" ~/.ssh/authorized_keys # Sâassure que le fichier appartient Ă lâutilisateur courant
chmod 600 ~/.ssh/authorized_keys # Sâassure que le fichier nâest visible que par lâutilisateur courant
Ensuite pour crĂ©er le lien dâapprobation vous devez ajouter votre clĂ© publique Ă ce fichier, si vous souhaitez configurer plusieurs clĂ©s, il faut mettre une clĂ© par ligne. Cela peut se faire manuellement, mais il existe une solution avec sh-copy-id.
Pour activer le lien d'approbation, depuis la machine cliente, utilisez :
ssh-copy-id user@serverip
Vous pouvez contrĂŽler le contenu du fichier ~/.ssh/authorized_keys
 :
cat ~/.ssh/authorized_keys # pour Ă©diteur utiliser nano ou vi Ă la place de cat
Connexion depuis une machine cliente
Depuis la machine cliente (depuis laquelle vous souhaitez accéder au serveur) :
ssh <REMOTE_USER>@<REMOTE_MACHINE_IP>
Lorsque le nom dâutilisateur est le mĂȘme sur la machine distante que sur la machine cliente, vous pouvez utiliser simplement :
ssh <REMOTE_MACHINE_IP>
Si lâapprobation est bien configurĂ©e, vous nâaurez pas Ă rentrer de mot de passe, sinon vous devrez saisir le mot de passe pour lâutilisateur distant. Il est donc possible de configurer lâapprobation Ă distance, vous nâaurez alors quâĂ saisir le mot de passe que pour cette Ă©tape de configuration.
Liens
኿