SSH quoi et comment

De nombreux développeurs Web utilisent quotidiennement SSH ("Secure Shell") pour gérer leurs serveurs, sauvegarder des fichiers, travailler à distance et effectuer une multitude d'autres tâches. Aujourd'hui, je vais expliquer ce qu'est SSH, faire un bref historique et enfin vous apprendre à le configurer sur votre serveur distant ou même sur votre réseau local. Commençons!


Une explication de départ

Si vous lisez ceci, il est probable que vous connaissez au moins un peu Terminal (ou sous Windows, quelque chose comme Cygwin). Si oui, alors vous comprendrez cette explication fonctionnelle rapide de SSH.

SSH utilise essentiellement une connexion réseau pour entrer dans Terminal sur un autre ordinateur.

Si vous n'êtes pas familier avec Terminal, il existe de nombreuses explications et guides du débutant pour Terminal, à la fois ici sur Nettuts + et ailleurs. La puissance de SSH repose sur sa simplicité. En vous offrant l’accès au terminal d’une autre machine, SSH vous permet de contrôler totalement votre machine. Si vous comprenez la puissance de Terminal et sa connexion directe au fonctionnement interne de votre machine locale, vous comprenez la puissance de SSH.!


Une histoire brève

SSH a été développé à ses débuts en 1995. Son développeur, Tatu Ylonen, l'a développé comme le premier moyen sécurisé d'administrer un système UNIX distant. Avant SSH, les seuls outils qui existaient envoyaient des informations telles que les mots de passe en clair.


Alors, comment puis-je l'utiliser?

Il y a un million de guides sur la façon de se familiariser avec SSH. Nous couvrirons spécifiquement une méthode aujourd'hui. Tout d’abord, assurez-vous d’avoir SSH sur votre système.

  • Mac - Une version d'OpenSSH est préinstallée.
  • les fenêtres - Suivez un guide comme celui-ci ou celui-ci pour obtenir Cygwin et le package "openssh" installés.
  • Linux - Il est fort probable que OpenSSH soit déjà installé, mais si ce n’est pas le cas, vous pouvez suivre le même guide pour l’installer..

Pour déterminer si SSH est installé, exécutez 'qui ssh'. Si Terminal renvoie quelque chose le long des lignes de / usr / bin / ssh, alors vous êtes prêt à partir! Sinon, suivez l’un de ces guides pour l’installer.

Dans cet article, je supposerai que la version que vous utilisez est OpenSSH; Certaines différences de configuration dépendent de votre version de SSH. Nous expliquerons comment configurer un Mac pour se connecter à un serveur MediaTemple via une seule commande SSH. Une fois que SSH est installé sur votre ordinateur, vous devez vous assurer que SSH est activé sur votre hôte cible. SSH fonctionne par défaut sur le port 22; vous pouvez utiliser un outil de ligne de commande comme nmap Pour envoyer une requête ping à votre serveur afin de déterminer si le port 22 accepte les connexions entrantes, procédez comme suit:

 sudo nmap -sS nomhôte.com

Bien sûr, vous avez probablement accès à l'interface administrative du serveur. Assurez-vous de parcourir les options et d'activer SSH. Sur un serveur Mediatemple, cette configuration est située sous le panneau de configuration du serveur. Mediatemple SSH est accessible à l’adresse [email protected]. Vous pouvez ajouter des utilisateurs au compte, mais par souci de simplicité, nous utiliserons [email protected]..

Une fois que SSH est activé (et que vous avez défini un mot de passe root dans l’administrateur de votre serveur), vous pouvez exécuter la ligne suivante sur SSH sur votre serveur..

 ssh [email protected]

… Où primarydomain.com est votre domaine principal MediaTemple. Vous serez alors invité à entrer votre mot de passe (qui est le mot de passe root que vous avez défini dans le panneau de configuration). Si vous n'utilisez pas MediaTemple, vous pouvez également SSH directement sur l'adresse IP de votre serveur..

Si vous utilisez un hébergement partagé, il est probable que vous ne vous connecterez pas en tant que root. Au lieu de cela, vous vous connecterez avec un nom de compte utilisateur. Par exemple, si vous utilisez un service tel que Site5, vous pouvez vous connecter avec un nom d'utilisateur dans un sous-domaine, comme ceci:

 ssh [email protected]

En fin de compte, ces configurations dépendront de la société de votre serveur Web. Reportez-vous à la documentation de votre hôte pour plus d'informations..

Une fois que vous êtes "shelled", vous pouvez exécuter des commandes et parcourir le système de fichiers dans Terminal. Selon votre niveau d'accès, vous pourrez peut-être installer certaines choses sur votre serveur à l'aide des commandes apt-get ou wget. Vous pouvez gérer votre serveur Apache, modifier les fichiers de configuration avec un éditeur de texte basé sur Terminal, afficher les journaux des erreurs, vider les caches, afficher les fichiers directement sur un serveur pour vous assurer qu'ils correspondent à la version correcte, ainsi que de nombreuses autres tâches d'administration système de niveau inférieur. . Maintenant, si vous vouliez faire plus vite avec SSH?


Comment l'utiliser? Mieux?

SSH vous ouvre de nombreuses possibilités. Nous en ignorerons quelques-uns (car bon nombre d'entre eux sont davantage liés à l'administrateur système, comme le tunneling). Mais nous allons passer en revue quelques astuces utiles.

Connexion ultra rapide

Vous pensez à vous-même, "il semble qu'il devrait y avoir un moyen plus rapide de faire cela." Tu as raison. Et voici. Au lieu de devoir mémoriser votre domaine, votre mot de passe et votre nom d'utilisateur pour chaque serveur, vous pouvez configurer quelques configurations vous permettant d'accélérer le processus pour atteindre un objectif similaire..

 ssh myserver

Avec la bonne configuration, vous pouvez exécuter ceci, et sans avoir à entrer de mots de passe, adresses IP ou noms de domaine longs, vous êtes prêt! Encore une fois, nous supposerons que vous vous connectez à un serveur MediaTemple. Tout d'abord, nous allons générer clés ssh. Ceci est essentiellement un ensemble de clés cryptées qui vivent dans ~ / .ssh sur votre machine locale. Vous avez une clé "publique" et une clé "privée". Commencez par ouvrir une nouvelle fenêtre de terminal et créez le dossier .ssh dans votre répertoire personnel..

 mkdir ~ / .ssh

Ensuite, vous allez générer vos clés avec la ligne suivante. (Cela vient directement de la documentation de MediaTemple.)

 ssh-keygen -t rsa -b 2048 -f ~ / .ssh / id_rsa -C "Un commentaire à propos de votre clé va ici."

Cette ligne générera une clé ssh de type rsa, avec 2048 bits (pour la sécurité), à l'emplacement du fichier spécifié, avec le commentaire spécifié. Vous serez promis pour un mot de passe, mais ce n'est ni obligatoire ni nécessaire; Si vous ne fournissez pas de mot de passe, vous pourrez vous connecter automatiquement. Le type RSA correspond à la version 1 du protocole SSH. Le type DSA correspond à la version 2 du protocole. Consultez votre serveur Web pour connaître la version qu'ils utilisent. Une fois que vos clés sont générées, vous devrez l'exécuter pour vous assurer que vos configurations SSH sont définies sur les autorisations appropriées..

 chmod 700 ~ / .ssh && chmod 600 ~ / .ssh / *

Ensuite, vous allez télécharger votre clé publique sur votre serveur. Il y a plusieurs façons de le faire. de cette façon vient aussi de la documentation de MediaTemple.

 cat ~ / .ssh / id_rsa.pub | ssh [email protected] 'cat - >> ~ / .ssh / registered_keys'

Ce code fait écho à votre id_rsa.pub par un '|' (pipe) dans la commande suivante, qui est un SSH dans [email protected], où vous exécuterez un écho et une concaténation de ce que vous avez canalisé dans la première commande. Cela semble un peu compliqué, il y a donc plusieurs façons de gérer cela. Essentiellement, vous ne voudrez pas de sauts de ligne et votre clé publique sur sa propre ligne dans un fichier, appelé clés_autorisées sur votre serveur dans le répertoire ~ / .ssh /. Donc, s'il s'agit de la première ou de la seule clé que vous souhaitez sur votre serveur, vous pouvez exécuter cette commande pour la copier directement à cet emplacement..

 scp ~ / .ssh / id_rsa.pub [email protected]: .ssh / registered_keys

Cette ligne indique essentiellement: "Copiez ce premier fichier via SSH sur le serveur à cet emplacement par rapport à mon répertoire de base actuel".

Une fois que vos clés authorised_keys contiennent votre clé publique, vous pouvez essayer de vous connecter au serveur avec ssh [email protected]. Si vous placez votre clé publique dans les fichiers de configuration SSH du répertoire utilisateur racine, vous pourrez vous connecter directement à root. Vous serez interrogé sur une empreinte digitale RSA; allez-y et permettez cette action. Il ajoute le serveur auquel vous vous connectez à un fichier known_hosts. Ce fichier peut être utilisé pour beaucoup de choses différentes, mais en particulier pour vous protéger contre ce que l’on appelle une attaque "intercepteur". Si vous souhaitez en savoir un peu plus à ce sujet, consultez cette explication..

Si vous parvenez à vous connecter à votre serveur, comme si vous aviez entré un mot de passe, vos clés fonctionnent correctement. L'étape suivante consiste à ajouter quelques lignes pour un raccourci vers un fichier de configuration sur votre ordinateur. Ouvrez ~ / .ssh / config dans votre éditeur de texte favori (créez-le s'il n'existe pas) et ajoutez ce qui suit:

 Nom abrégé de l'hôte Nom de l'hôte somehost.com Nom d'utilisateur de l'utilisateur

Où "shortname" est un surnom du serveur auquel vous voulez vous connecter. Par exemple, "Host myserver" me permettrait de faire ssh myserver. Le nom d'hôte est l'emplacement de votre serveur et l'utilisateur est bien sûr votre nom d'utilisateur. Vous pouvez avoir Racine de l'utilisateur à cet endroit. Une fois ce fichier sauvegardé, vous devriez pouvoir exécuter une simple commande pour vous connecter à votre serveur, comme ceci:

 ssh shortname

Git Sans Hub

Remarque: cette section nécessite un peu de connaissance de Git..

Vous pouvez utiliser SSH pour configurer vos propres dépôts Git sur votre serveur! Ceci est utile pour les entreprises qui ne veulent pas exposer leur code sur GitHub pour quelque raison que ce soit et il est bon de pouvoir envoyer directement depuis un ordinateur local vers un dépôt Git sur votre propre serveur..

Pour ce faire, assurez-vous que Git est installé sur l’hôte et sur votre ordinateur local. Vous devrez peut-être passer par votre société de serveur Web pour installer Git. Ensuite, lancez git init sur votre serveur à l’emplacement où vous souhaitez placer votre dépôt Git. Bien sûr, vous pouvez le faire de cent façons différentes, mais si vous préférez ne pas avoir de référentiel nu, vous pouvez utiliser des branches pour y accéder depuis votre ordinateur local. Voici un flux de travail commun.

 ssh [email protected] cd / chemin / vers / repo initier git checkout -b passer en revue maître maître git # se déconnecter de la session shell à l'aide de ctrl-d cd / local / repo initier git add. git commit -am "un message" git remote ajouter origine [email protected]: / chemin / à / repo git checkout -b mise en place de l'origine git push staging ssh [email protected] cd / chemin / vers / repo mise en place de la fusion git

En gros, vous vous connectez au serveur, passez au chemin de dépôt souhaité, créez un référentiel et ajoutez une branche "intermédiaire" à laquelle vous pouvez accéder depuis votre ordinateur local. Ensuite, vous créez votre référentiel local et une branche "intermédiaire" correspondante sur votre ordinateur local, et ajoutez des fichiers à suivre vers le référentiel. Vient ensuite un commit initial. Vous ajoutez ensuite le référentiel distant sous la forme d'un alias "d'origine". Ensuite, vous poussez la branche de transfert intermédiaire vers la branche de transfert de l'alias "origine". Enfin, vous réintégrez le serveur et fusionnez la branche "staging" avec la branche "maître" par défaut..

SFTP> FTP

Vous pouvez également utiliser le protocole FTP (protocole de transfert de fichier) alimenté par SSH, qui est essentiellement une version de FTP plus sécurisée (cryptée) s'exécutant sur le port 22 (plutôt que le port FTP 21 par défaut). La plupart des clients FTP prennent également en charge SFTP. FileZilla (pour Windows) et Fetch (pour Mac) sont deux clients SFTP / FTP populaires (et gratuits)..

Accès facile à votre serveur presque n'importe où

Tant que vous êtes autour d'un ordinateur connecté à Internet, doté d'un terminal et doté de SSH (tout Mac connecté au WiFi, par exemple), vous pouvez accéder à votre serveur via SSH. C'est la meilleure partie. Vous n’avez besoin d’aucune configuration (en supposant que vous n’ayez défini aucune restriction exiger une clé publique correspondante), vous pouvez vous connecter avec votre nom d’utilisateur et votre mot de passe depuis pratiquement n’importe où. Il existe même des clients SSH pour iOS et autres appareils mobiles. Il s'agit d'une fonctionnalité très puissante de SSH qui n'est mise en parallèle que par des applications basées sur un navigateur..

Un repo de code local

J'espère que vous pourrez voir la puissance de SSH dans un cycle de développement quotidien.

Imaginons que quelques amis et vous travaillez ensemble sur du code. Supposons également que vous avez un contrôle total sur un ordinateur local que vous utilisez en tant que serveur de développement LAMP avec quelques ordinateurs virtuels installés dessus. Vous pouvez utiliser SSH localement pour déplacer des fichiers depuis et vers votre ordinateur et la machine de développement. Vous pouvez même configurer un dépôt local Git (ou svn ou Mercurial), alimenté par SSH, pour tout contrôler. Peut-être pourriez-vous même faire de la machine de développement la seule machine connectée au serveur distant via SSH, de sorte que le code a passer par un processus de préparation spécifique avant de pouvoir le mettre en production. SSH est la colonne vertébrale de toutes ces actions!

J'espère que vous pourrez voir la puissance de SSH dans un cycle de développement quotidien, en particulier pour les équipes utilisant le contrôle de version. Comme je l'ai indiqué précédemment, il existe une abondance de documentation et une multitude d'autres outils au niveau du réseau basés sur SSH ou s'appuyant sur SSH, qui vous donneront plus de contrôle et de puissance sur votre processus de développement et votre serveur. Qui sait? Peut-être qu'un jour, vous pourriez doubler comme un administrateur système après tout!


Quelques autres liens utiles

Voici d'autres liens utiles pour vous familiariser avec SSH. Cela fait un certain temps déjà qu'il y a beaucoup de documentation..

  • Le manuel officiel OpenSSH
  • Introduction de Linux Journal à SSH

Merci d'avoir lu!