Outils pour utilisateurs

Outils du site


admin:ssh

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

admin:ssh [2011/02/02 23:42] (Version actuelle)
Ligne 1: Ligne 1:
 +[[http://​wiki.ubuntu.com/​SSHHowto|Traduit]] par Manu complété par Les contributeurs d'​Ubuntu-fr. Documentation provenant de ubuntu-fr.org
  
 +====== SSH ======
 +
 +**OpenSSH** est une version libre de la suite de protocole de SSH, des outils de connectivité de réseau sur lesquels un nombre croissant de personnes sur l'​Internet viennent s'​appuyer. Beaucoup d'​utilisateurs de Telnet, Rlogin, FTP, ou d'​autres programmes identiques, ne se rendent pas compte que leur mot de passe est transmis à travers les réseaux en clair. **OpenSSH** chiffre tout le trafic (mots de passe y compris). **OpenSSH** fournit également une variété de méthodes d'​authentification.
 +
 +===== Copier des fichiers via SSH =====
 +
 +Pour copier un fichier à partir d'un ordinateur sur un autre avec SSH, vous devrez utiliser la commande **scp**. Cela ressemblera à ceci :
 +
 +  scp <​fichier>​ <​username>​@<​ipaddress>:<​DestinationDirectory>​
 +
 +
 +Ou en termes profanes, si je désirais copier un fichier d'un de mes ordinateurs à l'​autre,​ je procède de cette manière :
 +
 +  scp fichier.txt [email protected]:/​home/​hornbeck
 +
 +Vous pouvez aussi bien copier des fichiers à partir des ordinateurs à distance sur votre disque local :
 +
 +  scp [email protected]:/​home/​hornbeck/​urls.txt .
 +
 +Le point à la fin de commande indique de copier le fichier dans le répertoire courant. Vous pouvez aussi le renommer en le copiant (''​mon.txt''​) sur le disque local :
 +
 +  scp [email protected]:/​home/​hornbeck/​urls.txt ./mon.txt
 +
 +Vous pouvez très bien copier un fichier d'un ordi vers un autre tout en étant sur un troisième ordi :
 +
 +  scp [email protected]:​chemin/​fichier [email protected]:​chemin/​fichier
 +
 +===== Navigation via SSH =====
 +
 +
 +==== Console ====
 +
 +Pour pouvoir parcourir vos fichiers accessibles par ssh, il vous faut monter un système de fichier. Visitez la doc prévue à cet effet : [[:​sshfs|SSH Filesystem]].
 +
 +Remarque : cette méthode permet aussi d'y accéder de manière transparente avec Nautilus ou Konqueror sans utiliser les adresses spéciales précédentes
 +
 +===== Se connecter à un ordinateur distant via SSH =====
 +
 +Pour ouvrir une session sur un ordinateur distant ayant un serveur SSH, vous devez écrire quelque chose comme ceci :
 +
 +  ssh <​username>​@<​ipaddress>​
 +
 +Exemple :
 +
 +  ssh [email protected]
 +
 +**__Note__ :** Vous pouvez toujours employer le //​hostname//​ (s'il est connu du système ''/​etc/​hosts''​) au lieu des adresses IP.
 +
 +===== Authentification par mot de passe =====
 +Une authenfication par mot de passe (transmis chiffré) est possible. Suite à l'​installation du paquet **openssh-server** il peut être nécessaire de modifier le fichier de configuration ''​sshd_config''​ notamment si vous rencontrez le problème suivant :
 +
 +  [email protected]:​~$ ssh [email protected]
 +  Permission denied (publickey).
 +
 +Dans ce cas, il faut très basiquement modifier le ''​sshd_config''​ (''​sudo gedit /​etc/​ssh/​sshd_config''​) de la manière suivante :<​file>​
 +# Change to yes to enable tunnelled clear text passwords
 +PasswordAuthentication yes
 +</​file>​
 +
 +Puis en cas de modifications,​ redémarrer le service avec la commande :
 +
 +  sudo /​etc/​init.d/​ssh restart
 +
 +===== Authentification par clé publique =====
 +
 +Autrefois tout le monde employait l'​authentification typique //via// identifiant/​mot de passe. Cependant si quelqu'​un connaît votre mot de passe, la sécurité est compromise.
 +
 +Pour être débarrassé du problème, SSH offre l'​**Authentification par clé publique/​privée** au lieu des mots de passe << simples >>. De cette manière, il faut être en possession de non plus une mais de deux informations pour se connecter (avoir la clé privée & connaitre le mot de passe de cette clé).
 +
 +Ceci peut permettre par exemple :
 +  * à un admin de se connecter à des centaines de machines sans devoir connaitre des centaines de mots de passe différents ;
 +  * de ne pas avoir un mot de passe à saisir toutes les 2 minutes (en utilisant ''​ssh-agent''​).
 +
 +À moins que vous n'ayez déjà un couple de clés, vous devez d'​abord en créer. Tapez :
 +
 +  ssh-keygen -t dsa
 +
 +Il vous sera alors demandé où sauver la clé privée (acceptez juste l'​endroit par défaut) puis de choisir une passphrase. La //​passphrase//​ est employée pour chiffrer votre clé privée. Toute personne qui obtiendrait l'​accès à votre clé privée (non protégée) aurait vos permissions sur d'​autres ordinateurs. Veuillez prendre un instant et choisissez une très bonne //​passphrase//​.
 +
 +Les ordinateurs distants feront confiance à la machine qui pourra déchiffrer des clés chiffrées avec votre clé publique (en gros, il faut mettre la clé publique sur le serveur auquel on veut accéder).
 +
 +Votre clef publique a été créée avec la nouvelle clé privée. Elle est habituellement localisée dans le dossier caché ​  ''​~/​.ssh/​id_dsa.pub''​.
 +
 +L'​utilisateur distant doit avoir cette clé (c'est une ligne de caractères en code ASCII) dans son fichier de clé d'​autorisation situé à ''​~/​.ssh/​authorized_keys2''​ sur le système distant. Ainsi vous copiez/​collez juste la ligne dans le fichier ''​authorized_keys2''​ ou employez la commande ''​ssh-copy-id''​ comme ceci :
 +
 +  ssh-copy-id -i ~/​.ssh/​id_dsa.pub fileserver01
 +
 +Vous devrez donner le mot de passe //​utilisateur//​ de cet ordinateur. Si l'​authentification par mot de passe est désactivée,​ alors vous aurez besoin de copier/​coller votre clé suivant un autre moyen. Après que votre clé publique ait été ajoutée, vous devenez un hôte de confiance.
 +
 +Lancez :
 +
 +  ssh fileserver01
 +
 +et vous serez tenté de taper votre mot de passe mais c'est votre **passphrase** qui vous est demandée. Il y a une différence entre votre mot de passe et la passphrase. Le mot de passe est situé dans ''/​etc/​passwd''​ du système distant alors que la **passphrase** sert à déchiffrer votre //clé privée// de votre système local.
 +
 +Pour reprendre, deux choses sont nécessaires pour obtenir un accés réellement sécurisant (et sécurisé ;-) ) par authentification à clé publique au-dessus de l'​authentification par mot de passe classique :
 +  - **Votre clé privée**, chiffrée ;
 +  - **Votre passphrase**,​ utilisée pour déchiffrer votre clé privée.
 +
 +Ainsi si vous choisissez de ne pas avoir de mot de passe (ce qui est possible, voyez la prochaine section), vous aurez un minimun de sécurité autant qu'en utilisant seulement une authentification par mot de passe.
 +
 +**__Note__ :** Vous pouvez vouloir neutraliser l'​authentification par mot de passe pour des raisons de sécurité en plaçant dans le fichier de configuration ''/​etc/​ssh/​sshd_config''​ la ligne ''​PasswordAuthentication''​ à ''​no''​ (et ne **pas** avoir ''​UsePAM''​ à ''​yes''​ !, ou autrement dit en mettant également ''​UsePAM''​ à ''​no''​). N'​oubliez pas de relancer votre serveur **sshd** après avoir changé la configuration.
 +
 +===== Restriction d'​accès SSH =====
 +
 +Quand on utilise SSH avec l'​authentification par clé il y a d'​autres dispositions. Le serveur distant peut limiter l'​utilisation de certaines commandes permises. Si vous maintenez un dépôt CVS, vous pourriez utiliser des lignes comme ceci dans le fichier ''​authorized_keys2''​ :
 +
 +  command="/​usr/​bin/​cvs server"​ ssh-dss AAAAB3N....
 +
 +Ceci permettrait que seule cette commande puisse être utilisée. Rien d'​autre.
 +
 +===== Accès automatique pour des scripts =====
 +
 +L'​authentification par clé publique (voir ci-dessus) peut également être employée pour automatiser les tâches qui exigeraient habituellement l'​introduction au clavier d'un mot de passe. Imaginez vouloir copier un dossier à partir d'un ordinateur distant tous les jours à minuit. Tout que vous avez à faire c'est d'​établir la confiance entre ces deux ordinateurs. Créez un compte de service sur un ordinateur, créez une paire de clé (''​ssh-keygen - t DSA''​) et quand on vous demande de rentrer la passphrase taper juste sur la touche <​Entrée>​. Ceci fera que votre clé privé ne sera pas protégée. Ajoutez la clé publique de l'​autre ordinateur dans le fichier ''​authorized_keys2''​ (''​ssh-copy-id''​). Maintenant vous pouvez utiliser SSH sur cette machine sans une //​passphrase//​ à taper. Ajoutez une référence à SSH dans votre //crontab// et vous êtes prét.
 +
 +
 +**__Attention__ :** Avoir une clef privée non protégée peut être un trou de sécurité. Les intrus devront seulement obtenir l'​accès à la clé privée et pourront accéder aux ordinateurs distants.
 +
 +===== Utiliser le ssh-agent =====
 +
 +Si vous devez fréquemment copier des fichiers avec SSH ou accéder à d'​autres ordinateurs de votre réseau (ce qui est une tâche commune pour des administrateurs),​ vous vous demandez probablement s'il y a une manière de simplifier l'​utilisation de la passphrase. En fait il y a **SSH agent**. Vous devez seulement entrer votre passphrase une fois en employant **ssh-add** et tout ce que vous commencez comme sous-processus de **SSH agent** se rappellera cette passphrase.
 +
 +Trop théorique ? Bien, vous n'​aurez pas besoin de vous inquiéter de l'​agent. Votre session X est prête pour avoir le **ssh-agent** en session automatiquement. Tout ce que vous devez faire c'est lancer **ssh-add** et saisir votre passphrase. La prochaine fois que vous utiliserez **SSH** pour accéder à un autre ordinateur, vous n'​aurez pas à entrer à nouveau votre passphrase. Cool, non ? :-)
 +
 +
 +**__Important__ :**
 +
 +  * Vous devrez bloquer votre session pendant vos absences car d'​autres pourraient accéder aux ordinateurs distants à partir de votre machine sans savoir votre passphrase.
 +  * Si vous voulez rentrer votre passphrase une fois juste après l'​ouverture de session, vous pouvez ajouter un appel à **ssh-add** comme ceci :
 +    * Cliquez sur **Système** -> **Préferences** -> **Sessions** -> **Programme au démarrage**.
 +    * Cliquez sur **Ajouter**.
 +    * Entrez la commande **ssh-add**.
 +
 +À la prochaine ouverture de session, vous devrez taper votre passphrase.
 +
 +===== Le fichier de configuration du serveur SSH =====
 +
 +Par défaut, la configuration du serveur SSH (fichier ''/​etc/​ssh/​sshd_config'',​ édition //via// sudo comme il se doit)  est suffisante :<​file>​PermitRootLogin yes</​file>​
 +
 +<​file>#​Banner /​etc/​issue.net</​file>​
 +
 +Vous pouvez décommenter (c'​est-à-dire enlever le ''#''​) cette ligne. Effet : lorsque vous essayez de vous connecter à votre serveur par SSH, le fichier ''/​etc/​issue.net''​ est affiché (à vous de le personnaliser).
 +
 +<​file>#​MaxStartups 10:​30:​60</​file>​
 +
 +Vous pouvez aussi décommenter cette ligne, effet : le 10 représente le nombre de connexions acceptées sans qu'un utilisateur ait réussi à s'​identifier,​ si cela passe au dessus de 10, il y a 30 % de chances que les suivantes soient bloquées, ça augmente linéairement jusqu'​au //full// à 60 %. Trés utile pour eviter ce [[http://​linuxfr.org/​~dark_star/​18379.html|genre]] de désagrément.
 +
 +<​file>​AllowUsers alice bob</​file>​
 +
 +Ligne à ajouter, spécifie les logins des seuls utilisateurs (ici seuls Alice et Bob, pas Carole) autorisés à se connecter. Idéal pour ouvrir un compte FTP à un ami tout en restreignant l'​acces au Shell via SSH.
 +
 +===== Liens =====
 +
 +Quelques liens en français pour un complément d'​information :
 +  * http://​ernest.tuxicity.net/​index.php?​choix=Reseau&​tuto=ssh-x
 +  * http://​www.commentcamarche.net/​crypto/​ssh.php3
 +  * http://​www.labo-linux.org/​index.php?​page=pas&​id=328&​p=1
 +  * http://​www.openssh.com/​fr/​
admin/ssh.txt · Dernière modification: 2011/02/02 23:42 (modification externe)