Connexion SSH sans mot de passe

Pour une raison ou pour une autre, que vous ayez des scripts shell, des crons ayant besoin d’accèder à un serveur en SSH, ou que vous en ayez marre de taper dix fois par jour le mot de passe root de vos serveurs, voilà comment accéder à un serveur en SSH sans avoir besoin de mot de passe sur Debian ou toute debian-based distribution. Mais avant…

La sécurité on en parle ?

Eh oui, c’est bien pratique de pouvoir se connecter sans mot de passe, mais cela peux poser des problèmes de sécurité et avoir de lourdes incidences sur votre infrastructure. En effet, mettre en place cette opération permet à n’importe qui d’effectuer n’importe quelle action sur le serveur en question, surtout avec le compte root. Cela reviens plus ou moins à laisser l’ordinateur sans surveillance avec un terminal connecté en SSH au serveur en question. Quelques considérations générales sur la sécurité à prendre en compte avant de faire cette opération :

  • Si vous n’êtes pas le seul à vous servir de l’ordinateur que vous allez configurer, crée évidemment un utilisateur dont vous seul avez l’accès, avec un de passe fort.
  • Encryptez le répertoire home de votre session ainsi que l’espace d’échange swap.
  • Si vous travailler dans un espace public ou que d’autres personnes on accès à votre espace de travail, verrouillez votre session lorsque vous vous absentez.
  • Si vous effectuez cette opération sur un serveur, pensez aux éventuelles vulnérabilités de vos sites, assurez vous d’avoir sécurisé les principaux services (surtout apache / nginx / lighttpd), n’installez pas de thèmes / plugins payants  de CMS téléchargés gratuitement sur certains sites, etc.

Une fois ces considérations sur la sécurité appliquées, rentrons dans le vif du sujet.

Note : Les commandes fournies ne doivent pas contenir le mot-clef sudo si exécutée en root. Pour la clarté de l’article, appelons la machine qui veux se connecter sans password A et la machine qui doit être accédée B.

Installer OpenSSH

Si vous voulez accéder à un serveur en ssh, il y a fort à parier que OpenSSH soit déjà installé sur votre machine A. Dans le cas ou ce ne serai pas le cas, un petit

sudo apt-get install openssh-client

Si la machine B ne permet pas d’accès SSH, installer le avec la commande suivante

sudo apt-get install openssh-server

Créer votre clef SSH

Sur votre machine A, effectuer cette commande

ls ~/.ssh

Il est possible que vous trouviez un fichier « id_rsa.pub ». Si ce n’est pas le cas, générez le avec cette commande

ssh-keygen -t rsa

Un premier prompt va vous demander l’emplacement. Laissez l’emplacement par défaut (/home/ma_session/.ssh/id_rsa.pub).

Un deuxième prompt, suivi d’une confirmation, vous demandera votre passephrase. Laissez la vide en appuyant deux fois sur Entrée.

Votre clef est générée, vous devriez maintenant voir quelque chose ressemblant à ceci

Capture du 2015-10-19 20:36:10

Maintenant, il est temps de mettre notre clef public (id_rsa.pub) dans le fichier .ssh/authorized_keys de la machine B. Voila deux commandes, prenez celle que vous retiendrai le plus facilement

cat ~/.ssh/id_rsa.pub | ssh remote_user@remote_ip 'cat >> .ssh/authorized_keys'

# ou bien

ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_ip

Le remote_user et remote_ip sont bien-sûr l’user et l’ip cibles de la machine B.

La console vous demande votre mot de passe. Saisissez le, puis essayer de vous connecter en ssh

ssh remote_user@remote_ip

Et voila, vous disposez maintenant d’une connexion SSH sans mot de passe demandé. Faites en bon usage 😉

Adam Écrit par :

Développeur web et webdesigner en Freelance passionné de code et de design. Autodidacte et amoureux de la connaissance, je suis curieux et passe mon temps à apprendre de nouvelles choses, que j'ai envie de vous faire partager !

Soyez le premier à commenter

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *