Hébergements web » Accès SSH sur un hébergement

Accès SSH sur un hébergement

Il est tout à fait possible d’avoir un accès SSH sur un hébergement o2switch. Pour bénéficier de l’accès SSH, il suffit de contacter le support en nous fournissant la ou les adresses IPs que nous devrons placer en liste blanche.

Authentification

Il existe trois méthodes pour s’authentifier :

  • La méthode classique, avec un identifiant/mot de passe. C’est le plus courant.
  • Directement depuis cPanel avec l’outil terminal
  • Avec un système de clé SSH
Méthode simple (Conseillé)

Pour la connexion en SSH, il faut utiliser le même identifiant et mot de passe que cPanel, sur le port 22. L’hôte de connexion peut être l’un des domaines que vous hébergez. Si vous avez une erreur timeout cela signifie que votre adresse IP n’est pas en liste blanche côté serveur ou bien que votre dyndns n’est pas à jour.

Méthode Outil Terminal

Il est possible d’avoir un shell SSH avec l’outil Terminal dans cPanel. La connexion est automatique, il suffit d’être connecté sur cPnael.

Méthode par Clé SSH

Pour l’authentification avec un système de clé SSH, il faut générer un jeu de clés privée et publique.

La clé privée doit être générée sur votre ordinateur et doit rester secrète. La clé publique est également générée sur votre ordinateur, mais elle doit aller sur votre espace d’hébergement.

Génération des clés sur *nix

Si vous utilisez un système d’exploitation basé sur Mac ou Linux, vous pouvez générer les clés directement avec ssh-keygen qui est (normalement) installé par défaut. Génération des clés

ssh-keygen -t rsa

Lors de la génération des clés, plusieurs choses sont demandées :

  • Chemin de stockage de la clé, vous pouvez valider en appuyant sur entrer directement
  • Passphrase : même chose, validez en appuyant sur entrer (deux fois)

Les deux clés se situent dans le répertoire .ssh à la racine de votre compte utilisateur (votre ordinateur, pas votre hébergement !) :

  • /home/username/.ssh/id_rsa pour la clé privée
  • /home/username/.ssh/id_rsa.pub pour la clé publique

Génération des clés Windows

Pour Windows, il faut installer un logiciel supplémentaire : PuTTYgen. Vous pouvez en profiter pour installer le client SSH Putty également, si cela n’est pas déjà fait.

Ces deux logiciels sont téléchargeables sur le site officiel du projet. Vous pouvez prendre la version A Windows MSI installer package for everything except PuTTYtel. Prenez bien garde à télécharger cela sur le site officiel, des copies frauduleuses existent et contiennent des infections permettant aux pirates de récupérer les clés ou login/mot de passe utilisés !

Ensuite, il faut lancer PuttyGen pour générer les clés. Veillez à bien générer des clés SSH-2-RSA et cliquez sur le bouton de génération. Le logiciel va vous demander de bouger la souris dans tous les sens pour utiliser ces mouvements aléatoires lors de la génération des clés.

Une fois les clés générées, le logiciel vous proposer de les sauvegarder à l’aide de deux options : save public key et save private key. Faites le en prenant garde à la clé privée qui doit rester secrète. Vous pouvez appeler la clé publique id_rsa.pub et la clé privée id_rsa.

Mise en place des clés

Une fois les clés générées, il faut les mettre en place. Pour cela, il faut envoyer la clé publique (id_rsa.pub) sur le serveur dans le dossier .ssh qui se situe à la racine de votre hébergement.

Pour cela, il faut copier/coller le contenu du fichier id_rsa.pub dans le fichier suivant (à créer si besoin) : ~/.ssh/authorized_keys2 (le dossier .ssh étant à la racine de votre hébergement).

Attention, si vous avez utilisé PuTTyGen pour générer les clés, il faut copier/coller le contenu de la fenêtre visible dans le logiciel dans le fichier ~/.ssh/authorized_keys2. Le fichier généré par le logiciel PuTTyGen est dans un format différent pour le fichier id_rsa.pub.

Vous pouvez utiliser le gestionnaire de fichier de cPanel pour faire cela, ou bien envoyer le fichier par FTP ou encore, faire cela en ligne de commande directement (linux et mac) : Exemple d’envoi de clé par SSH

    cat ~/.ssh/id_rsa.pub | ssh identifiantcPanel@mondomaine.tld "cat >> ~/.ssh/authorized_keys2"

Les droits du répertoire .ssh et des fichiers contenus dans ce répertoire sont très importants. Des mauvais droits dans ce dossier empêcheront la connexion (par sécurité). Voici les bons droits, à vérifier en cas de problème :

  • Dossier .ssh : chmod 700
  • Fichier .pub (clé publique) : chmod 644
  • Fichier .key ou id_rsa (clé privée, sur votre ordinateur) : chmod 400
  • Authorized_keys (sur le serveur) : chmod 644

Si vous êtes sur Mac ou Linux, la connexion SSH devrait à présent être possible automatiquement, sans indiquer de mot de passe. La clé privée est déjà bien installée dans votre client SSH.

Si vous êtes sur Windows, vous utilisez sans doute PuTTy et il faut installer cette clé privée dans PuTTy. Pour cela, lancez le logiciel et ajoutez une nouvelle connexion en remplissant la case Hostname et en mettant un nom dans la case saved sessions. Ensuite, il faut aller dans l’onglet data pour définir l’option auto-login username qui permet de garder en mémoire l’identifiant de connexion. Après, il faut aller dans l’onglet Auth de la catégorie SSH pour définir la clé privée dans private key file for authentification. Enfin, il faut retourner une dernière fois dans l’onglet sessions pour enregistrer tout cela.

La connexion en SSH est désormais possible, sans mot de passe, via le système de clés !

Limites de l’accès SSH

L’accès SSH permet de gérer votre hébergement. Les usages courants (non exhaustif) de l’accès SSH sur nos hébergements sont :

  • utilisation de la console pour manipuler les fichiers / dossiers
  • génération d’archive zip et tar.gz de certains dossiers (attention, cela va utiliser le maximum de ressources à disposition sur votre hébergement)
  • sauvegarde de base de données avec mysqldump
  • création de script bash ou autre (python)
  • utilisation de la console de certains framework : la console Symfony2 par exemple, ou laravel, ou les autres Frameworks utilisant des concepts similaires
  • utilisation de la console sur des Framework Python, avec les virtualenv (cela est possible à l’aide de l’outil setup python app de cPanel). Utilisation de pip possible pour installer des dépendances/outils
  • utilisation de ruby/ruby on rails via un environnement virtuel créé avec l’outil setup ruby app. Installation de dépendances avec gem et bundler possible.
  • utilisation de la console de certains CMS, wp-cli pour WordPress, drush pour drupal (+ bien d’autres CMS)
  • utilisation des commandes node et npm. Installation de dépendances possibles avec ces outils.
  • c’est possible de travailler dans un environnement virtuel node JS créé avec l’outil setup nodejs app
  • versionnage et déploiement avec git

Ce qui n’est pas possible en revanche :

  • installer de nouveaux paquets sur le système, à l’aide de yum install ou apt-get
  • installer des applicatifs type “serveurs”
  • modifier les réglages du serveur : pare-feu, configuration du serveur web
  • de manière générale, tout ce qui demande les droits d’administration (root) ou des droits supérieurs à ceux d’un compte utilisateur sur Linux