Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:reseau:ssh [07/01/2014 20:58] bendia [Installation] |
doc:reseau:ssh [09/07/2014 13:04] captnfab [Différents usages de ssh] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== SSH ====== | + | ====== ssh : shell distant sécurisé ====== |
* Objet : tout savoir sur SSH | * Objet : tout savoir sur SSH | ||
- | * Niveau requis : {{tag>avisé}} | + | * Niveau requis : {{tag>débutant,avisé}} |
* Commentaires : //Administrer son serveur à distance, établir un tunnel sécurisé pour relayer des ports, etc... // | * Commentaires : //Administrer son serveur à distance, établir un tunnel sécurisé pour relayer des ports, etc... // | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
- | * Suivi : {{tag>en-chantier}} | + | * Suivi : {{tag> à-compléter à-tester}} |
- | * Mis en forme par bendia le 7/01/2113 à partir des différents tuto | + | * Création par [[user>bendia]] le 07/01/2113 à partir des différents tuto |
* Testé par <...> le <...> FIXME | * Testé par <...> le <...> FIXME | ||
- | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=1583 | Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | + | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=1583 |ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
- | === Nota === | + | **Nota :** |
Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
+ | ===== Introduction ===== | ||
+ | **ssh** (Secure SHell) est un protocole de communication réseau et une application qui permettent de crypter et d'authentifier les informations échangées. Il est donc plus difficile de les intercepter. | ||
+ | ===== Une application client/serveur ===== | ||
- | ===== Connexion par clés asymétriques ===== | + | **ssh** fonctionne sur le mode client/serveur. |
- | ==== RSA ou DSA ? ==== | + | Il y a : |
+ | * d'un côté le serveur, la machine sur laquelle on veut se connecter, et qui //écoute// par défaut sur le port 22. On peu considérer que c'est la machine à laquelle on a pas d'accès physique en tant qu'utilisateur. | ||
+ | * et de l'autre côté le client, la machine depuis laquelle on veut établir la connexion. C'est la machine locale où se trouve la clavier qu'on utilise. | ||
+ | Nous allons donc découper cette documentation en plusieurs pages | ||
+ | - [[:doc:reseau:ssh:client|la partie cliente]] : comment faire pour vous connecter à un serveur **ssh** existant, | ||
+ | - [[:doc:reseau:ssh:serveur|la partie serveur]] : comment configurer votre machine pour qu'elle puisse jouer le rôle de serveur **ssh**. | ||
- | Peu importe. | + | ===== Différents usages de ssh ===== |
- | ==== Générer une clé ==== | + | **ssh** peut être utilisé de différentes façon : |
- | //Exemple avec une clé DSA.// | + | * Pour ouvrir un shell sur une machine distante, voir la partie cliente ci-dessus. |
- | + | * Pour encapsuler vos connexions dans une connexion ssh, voir [[:doc:reseau:ssh:vpn|VPN avec ssh]]. | |
- | Pourquoi ne pas autoriser les connexions uniquement par clefs privés/public et interdire les connections standards où les mots de passes passent en clair. | + | * Pour copier un fichier vous devez vous servir de : [[:doc:reseau:scp|scp]] |
- | + | * Pour monter des répertoires distants sur votre machine locale, servez-vous de : [[:doc:reseau:ssh:sshfs|]] | |
- | === Création de la cle === | + | * Pour accéder à une machine sous ssh comme à un serveur ftp |
- | + | * [[:doc:reseau:ssh:tp-sftp-via-openssh-server|Configuration d'OpenSSH comme serveur SFTP]] | |
- | Le but est de se passer du mot de passe qui au niveau sécurité est trop faible, nous allons généré une clée cryptée unique pour votre PC. | + | * Consultation par le vlient via [[:doc:reseau:sftp|sftp]] ou [[:doc:reseau:filezilla|FileZilla]] |
- | <code user>ssh-keygen -t dsa</code> | + | |
- | <code>Generating public/private dsa key pair. | + | |
- | Enter file in which to save the key (/home/user/.ssh/id_dsa): /home/user/.ssh/nom_fichier | + | |
- | Enter passphrase (empty for no passphrase): (mettre une passphrase qui sera demandée à chaque connexion - ou rien si c'est pas nécessaire pour vous) | + | |
- | </code> | + | |
- | Vous validez 2 fois et vous obtiendrez le résultat en détail de la création de votre cle dsa. | + | |
- | + | ||
- | === Exportation de la cle === | + | |
- | + | ||
- | Votre clé sera générée en 1024 bits dans votre dossier /home/votre_user/.ssh/ pour la mettre en place il vous suffit de l'exporter sur votre pc distant. | + | |
- | + | ||
- | <code user>ssh-copy-id -i /home/user/.ssh/id_dsa.pub user@192.168.x.x</code> | + | |
- | mot_de_passe (serveur distant) | + | |
- | + | ||
- | Voilà votre clé est en place, maintenant passons à la sécurité de votre système. | + | |
- | + | ||
- | ==== Restreindre les connexions à SSH ==== | + | |
- | + | ||
- | Il suffit d'éditer le fichier ''sshd_config'' en root sur le PC distant. Le fichier se trouve dans le dossier ///etc/ssh/// | + | |
- | <code root>nano /etc/ssh/sshd_config</code> | + | |
- | Puis de modifier les arguments suivant «le cas est pris pour une connection __uniquement par clé__» : | + | |
- | + | ||
- | <code bash>PermitRootLogin no # évite la connexion root « plus que recommandé » | + | |
- | RSAAuthentication yes # active la reconnaissance RSA | + | |
- | PubkeyAuthentication yes | + | |
- | AuthorizedKeysFile .ssh/authorized_keys # va uniquement chercher la clé sur ce fichier | + | |
- | PasswordAuthentication no # désactive la connexion par mot de passe | + | |
- | PermitEmptyPasswords no # désactive les mots de passe vide | + | |
- | UsePAM no # désactive la connection par mot de passe | + | |
- | AllowUsers votrelogin secondlogin # restreint l'accès à votre login uniquement | + | |
- | DenyUsers test guest admin root snort apache nobody # interdire l'accès à certains users, pour les paranos... | + | |
- | MaxStartups 1 # limite la connexion, normalement 6 par défaut</code> | + | |
- | + | ||
- | === Restreindre la connexion à un utilisateur === | + | |
- | + | ||
- | Moins de monde autorisé à se connecter via ssh, moins de risques il y aura… | + | |
- | + | ||
- | AllowUsers **monuserquipeutseconnecter** | + | |
- | Il est possible de spécifier plusieurs utilisateurs ou un masque d'expression régulière, je vous laisse lire la doc pour un paramétrage plus fin | + | |
- | + | ||
- | === Restreindre la connexion à un groupe === | + | |
- | + | ||
- | dans le même esprit que le paramètre ci-dessus on peut autoriser directement tous les utilisateurs d'un groupe. | + | |
- | + | ||
- | AllowGroups **mongroupadmin** | + | |
- | Les options qu'il est conseillé de changer dans un premier temps sont : | + | |
- | + | ||
- | === Le port === | + | |
- | + | ||
- | * Le port **22** # C'est le port par défaut du service SSH | + | |
- | Nous allons le mettre ici à 10010 | + | |
- | Port **10010** | + | |
- | + | ||
- | Une fois configuré il vous suffit de relancer SSH, à faire en root : | + | |
- | <code root>service ssh restart</code> | + | |
- | + | ||
- | ==== Navigation via SSH ==== | + | |
- | + | ||
- | Pour voir les fichiers avec konqueror et Nautilus rien de plus simple | + | |
- | + | ||
- | === Konqueror === | + | |
- | + | ||
- | <code user>fish://user@192.168.x.x</code> | + | |
- | + | ||
- | === Nautilus === | + | |
- | + | ||
- | <code user>ssh://user@192.168.x.x:22</code> | + | |
- | + | ||
- | === Terminal === | + | |
- | + | ||
- | Pour te connecter sur un serveur ssh qui n'a pas le port 22 par défaut. | + | |
- | <code user>ssh mattux@mon.serveur.org -p 10010</code> | + | |
- | + | ||
- | -p **10010** bien sûr à adapter au port ouvert, son numéro ! | + | |
- | + | ||
- | Avec la configuration de base le mot de passe de la session vous sera demandé, avec la clé rien ne vous sera demandé. | + | |
- | + | ||
- | ==== Tunnel chiffré en SSH ==== | + | |
- | + | ||
- | Il se peut que vous vouliez établir une connexion distante pour transiter des données de manière 100% transparente et sécurisée, nous allons donc établir un tunnel ssh. | + | |
- | <code root>ssh -L 5901:localhost:5900 user@80.80.80.80</code> | + | |
- | Cette technique est très utile pour relier en local un bon nombre d'utilisation, comme sur kde distant, un serveur smtp personnel, une boite mail ( pop ou imap ) personnelle, un bon nombre d'utilisations ont recours à cette technique. | + | |
- | + | ||
- | === Détail sur la ligne de commande SSH === | + | |
- | + | ||
- | *ssh : invoque le protocole | + | |
- | *-L invoque de la création d'un tunnel crypté | + | |
- | *5901 : port coté local | + | |
- | *localhost : indique que l'accès se fera en local de manière transparente | + | |
- | *5900 : port du service distant | + | |
- | *user@80.80.80.80 : indique avec quelle user et sur quelle ip on va établir la connection. | + | |
- | + | ||
- | ===== Commandes annexes ===== | + | |
- | + | ||
- | * Pour ''COPIER'' un fichier sécurisé vous devez vous servir de : [[:doc:reseau:scp|scp]] | + | |
- | + | ||
- | * Pour ''MONTER'' les fichiers servez-vous de : [[:doc:reseau:sshfs|]] | + | |