Utilisez Une Connexion Sécurisée Avec SSH
Marre de chercher à droite et gauche comment utiliser SSH ! Place à la sécurité. Ce guide par étapes devrait te permettre de te connecter assez rapidement à un serveur distant.
Prérequis :
- une console Bash (ou wsl par exemple)
- la commande ssh
Ces commandes te permettront de te connecter de manière sécurisée (échange de mot de passe crypté) et de sauvegarder le mot de passe pour chaque nouvelle connexion.
Pour plus d’infos sur les commandes linux tu peux également consulter un aide-mémoire sur les Commandes Linux
Installer SSH
Si nécessaire tu peux installer le paquet ssh
. Cependant ce dernier est préinstallé dans la plupart des distributions Linux.
Pour installer ssh
tu peux exécuter les commandes suivantes :
Info :
A effectuer côté clientsudo apt-get install ssh
Tu peux aussi installer les paquets :
- openssh-client côté client
- openssh-server côté server
- ssh pour les deux
Si tu penses que SSH est déjà installé, tu peux taper la commande suivante pour connaître la version :
ssh -V
Vérifier que SSH est actif
Pour vérifier que le service ssh
est actif, entre la commande :
sudo service ssh status
Tu devrais voir un message t’indiquant que le service SSH est actif
sinon tape :
sudo service ssh start
Tester la connexion SSH en local
Pour réaliser un premier test en local, tu peux entrer la commande suivante en prenant soin de remplacer <username>
par ton identifiant
ssh <username>@localhost
↳ Entre à présent ton mot de passe utilisateur.
Quelques modifications pour plus de sécurité
On ne devrait pas se connecter à un serveur avec le compte root
et entrer le mot passe de ce compte. Cela pose des problèmes de sécurité.
Tu peux cependant générer une paire de clés afin de crypter ton mot de passe.
Info :
A effectuer côté clientGénère une paire de clés (valide le dossier par défaut ~/.ssh
) :
ssh-keygen -t rsa
ou
ssh-keygen -t rsa -C "your.email@example.com" -b 4096
↳ Définis un “pass phrase” complexe.
Puis envoie la clé publique sur le serveur en tapant :
ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<ip-address>
Si l’authentification par mot de passe est désactivée tu peux entrer :
ssh login@serveur "echo $(cat ~/.ssh/id_rsa.pub) >> .ssh/authorized_keys"
Tu peux maintenant te connecter :
ssh <username>@<ip-address>
↳ Entre maintenant le “pass phrase”
Editer le fichier .ssh/config
Pour plus de confort, tu peux configurer le fichier config
. Cela permettra d’enregistrer les références de ton serveur.
vi .ssh/config
Puis insère les lignes suivantes en remplaçant les termes
Host <name>
HostName <host>
User <username>
Port <22>
<name>
: C’est le nom de ton serveur, tu peux mettre ce que tu veux
<hostname>
: Cela peut être l’adresse IP de ton serveur ou nom de domaine
<username>
: Ton identifiant sur le serveur
<port>
: Le numéro de port 22 par défaut mais celui-ci peut être différent
Ensuite execute
chmod 600 .ssh/config
Se connecter automatiquement a chaque ouverture du terminal
D’abord exécute l’agent SSH en local (sur ta machine)
exec ssh-agent bash
Une alternative consiste à faire :
eval `ssh-agent`
Ensuite il reste à executer la commande suivante pour retenir le mot de passe :
ssh-add
Comment retenir le “passphrase” de manière permanente
Tout d’abord, assure-toi que ssh-agent
fonctionne tout le temps en ajoutant eval $(ssh-agent)
au fichier .bashrc
ou .profile
Ensuite ajoute AddKeysToAgent yes
au fichier de configuration ssh :
touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo "AddKeysToAgent yes" >> ~/.ssh/config
Ainsi le “pass phrase” sera enregistrée pour la session.
La solution avec keychain
Tu peux aussi t’aider de la commande keychain
Voir le tutoriel : http://www.qanuq.com/2017/10/09/installer-ssh-keychain/
Pour ce faire, entre les commandes suivantes :
apt install keychain
puis
vi ~/.profile
Insère la commande à la fin du fichier .profile
(ou .bashrc
)
eval `keychain --eval --agents ssh ~/.ssh/neptune_key ~/.ssh/ma_cle_perso`
puis execute
source .profile
A savoir, tu peux changer ou supprimer le “pass phrase” avec les commandes suivantes
ssh-keygen -p
Info :
Valide sans mot de passe si tu ne veux plus de mot de passeLister les clés disponibles
Enfin tu peux lister toutes les clés sur ta machine en faisant
ssh-keygen -l