Lorsque l'on travaille sur un serveur, nous n'avons pas accès directement à la machine pour pouvoir taper nos différentes commandes. Il va donc nous falloir utiliser un protocole particulier pour communiquer avec cette dernière : SSH.
Lorsque vous commandez un serveur dédié auprès d'un hébergeur, SSH est déjà installé et on vous fournira souvent les accès root (administrateur) à la machine.
Comment utiliser SSH
Pour vous connecter en utilisant ce protocole il vous faut utiliser le programme SSH. Il est disponible par défaut sur Mac et Linux. En revanche les choses ne sont pas aussi faciles sur Windows :
- Si vous avez déjà installé MsysGit ou Cygwin sur votre machine vous devez déjà avoir accès à la commande SSH
- Sinon vous pouvez utiliser un outil qui vous permettra de démarrer une session SSH directement : PuTTy et PuTTygen qui nous servira à générer des clefs.
Pour se connecter à notre machine il suffit donc de taper la commande SSH :
ssh user@ip -p port
ssh dev@10.0.2.15 # se connecte sur le port 22 par défaut
Sécurisons notre accès SSH
Nous allons tout de suite modifier la configuration de SSH afin d'améliorer un peu la sécurité de notre serveur. Pour cela on va modifier la configuration qui se trouve dans le dossier /etc/ssh/sshd_config
. Nous n'allons pas passer toute la configuration en revue, mais seulement les paramètres importants :
Port
, permet de changer le port d'écoute d'SSH ce qui permet de rendre votre porte d'entrée moins évident à trouverPermitRootLogin
, à mettre àno
car on ne souhaite pas que les gens puissent se connecter en tant qu'administrateurs. Dans ce cas là il vous faudra accéder au serveur avec un autre utilisateur (vous pouvez créer un nouvel utilisateur avec la commandeadduser lenomdevotreutilisateur
)PasswordAuthentication
, on mettra cette valeur àno
après avoir mis en place l'authentification par clef SSH. Ne mettez pas de suite cette valeur à no au risque de vous enfermer dehors.AllowUsers
, vous permet de lister les utilisateurs qui vont pouvoir se connecter à la machine.
Une fois que vous avez effectué une modification dans ce fichier, vous devrez redémarrer SSH pour que la configuration soit prise en compte.
sudo service ssh restart
Je vous conseille d'essayer de vous connecter en parallèle avec une autre fenêtre afin de vérifier que vos paramètres soient corrects. Vu que vous restez connecté avec votre session principale vous pourrez corriger les problèmes en cas de grosse bourde et éviter de vous retrouver hors de votre serveur sans moyen de vous y reconnecter.
Authentification par clef
Les mots de passe ne constituent pas une sécurité assez importante pour un accès aussi sensible. Nous allons pouvoir utiliser un système de clef SSH pour rendre les choses plus sécurisées. Si quelqu'un souhaite nous voler l'accès, il devra en plus posséder nos clefs, ce qui rajoute un obstacle supplémentaire pour les vilains méchants.
Sur votre machine
Nous allons donc commencer par générer une clef :
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Si vous avez choisi d'utiliser PuTTy, il vous faudra utiliser PuTTyGen pour générer la clef. Cette commande va générer 2 clefs
- Une clef publique, que vous donnerez aux serveurs sur lesquels vous souhaitez vous connecter
- Une clef privée, que vous devrez à tout prix garder pour vous et qui servira à valider la clef publique lors de la connexion.
Sur le serveur
Il va falloir maintenant dire au serveur que l'on accepte cette clef publique. Dans le dossier de notre utilisateur, il va falloir créer le fichier qui liste les clefs autorisées.
cd # on va dans le dossier utilisateur
mkdir -m 700 .ssh # on crée un dossier .ssh avec les droit seulement pour nous
vim .ssh/authorized_keys # on va copier notre clef dans ce fichier
chmod 600 .ssh/authorized_keys # on met des permissions très strictes sur le fichier
Voilà ! Vous pouvez maintenant vous connecter en SSH et on ne vous demandera plus le mot de passe, mais seulement la passphrase de votre clef SSH. Vous pouvez aussi désactiver la connexion par mot de passe un mettant le paramètre PasswordAuthentication
à no
(ne perdez pas votre clef après coup)
En cas de problème
Si vous avez des problèmes lors d'une connexion SSH il est possible d'obtenir plus d'information sur la connexion avec l'argument -v :
ssh -v dev@10.0.2.15