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 [27/10/2012 07:41] smolski |
doc:reseau:ssh [09/02/2021 18:32] captnfab [Différents usages de ssh] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== SSH - En Détail ====== | + | ====== ssh : shell distant sécurisé ====== |
- | ===== Débutant ===== | + | * Objet : tout savoir sur SSH |
+ | * Suivi : {{tag> à-compléter}} | ||
+ | * Création par [[user>bendia]] le 07/01/2013 à partir des différents tutos | ||
+ | * Complété par [[user>captnfab]] le 09/02/2021 à l'aide de sa muse | ||
+ | * 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 !)) | ||
- | Les pages de référence pour débuter l'utilisation du terminal : | + | ===== Introduction ===== |
- | * [[manuel:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | **SSH** est l'outil incontournable si vous avez une machine (ou plus) sous Linux((Ce qui est probablement le cas si vous lisez ceci…)). |
- | ===== Installation ===== | + | //SSH// signifie (Secure SHell). En pratique, c'est un protocole et des outils qui vous permettent de lancer des commandes ou copier des fichiers à distance sur une autre machine, de manière sécurisée (chiffrée, authentifiée). |
- | L'installation est d'une simplicité déconcertante | + | ===== Théorie: client/serveur ===== |
- | # aptitude install ssh | + | |
- | Et voilà le serveur est maintenant prêt à recevoir les premières connexions sur le port 22 | + | |
- | SSH est configuré avec un niveau de sécurité très faible, pour ce connecter en local à un PC distant il suffit de faire comme ceci. | + | **SSH** fonctionne sur le mode client/serveur. |
- | $ ssh user@192.168.1.x | + | |
- | mot_de_passe | + | |
- | Remplacer //user// par votre login sur le second PC et le //x// par la véritable **ip** de votre machine hôte, vous devrez répondre à la question par //yes// et saisir votre mot de passe de session. | + | |
- | <note importante>ATTENTION !</note> | + | |
- | Je vous recommande de ne pas exporter cette connection SSH tel quelle sur le net… Il y a des malins qui force le passage pour entrer chez vous, donc si vous voulez exporter une session SSH via un PC a 18 000 km de chez vous faites une configuration avancée. | + | |
+ | 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**. | ||
- | ===== Configuration avancée ===== | + | ===== Différents usages de ssh ===== |
- | ===== RSA ou DSA ? ===== | + | **SSH** peut être utilisé de différentes façon : |
- | ==== RSA ==== | + | === Exécuter des commandes à distance === |
+ | cf. la partie //cliente// ci-dessus. | ||
- | est un algorithme utilisé pour le protocole ssh 1 et 2, c'est un **protocole propriétaire** qui est __moins bien mis à jour__ et __n'est plus conseillé__ dans le protocole 2 | + | === Copier des fichiers à distance === |
+ | Pour copier un fichier vous devez vous servir de : | ||
+ | * [[:doc:reseau:scp|scp]] en ligne de commande | ||
+ | * [[:doc:reseau:sftp|sftp]] aussi en ligne de commande | ||
+ | * [[:doc:reseau:filezilla|FileZilla]] en GUI | ||
- | ==== DSA ==== | + | === Monter un dossier distant === |
+ | Pour pouvoir accéder à un dossier distant //presque// comme s'il était sur votre machine. | ||
- | est un algorithme utilisé à partir du protocole 2 de ssh, c'est un **algorithme libre** qui est très bien maintenu, il offre une meilleure sécurité à ce jour, il est conseillé en priorité dans un environnement type ssh2. | + | Pour monter des répertoires distants sur votre machine locale, servez-vous de : [[:doc:reseau:ssh:sshfs|]] |
- | ===== Générer une clé ===== | + | === Redirection sécurisée de ports === |
+ | 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. | + | === Limiter SSH au partage de fichiers === |
+ | [[: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. | ||
- | $ ssh-keygen -t dsa | ||
- | 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. | ||
- | Vérifiez que la clef dans le fichier se termine bien par votre adresse ip ( Ip Internet ) et non par le nom de votre poste. | ||
- | Si ce n'est pas le cas, remplacer le nom par votre adresse ip. | ||
- | $ scp /home/user/.ssh/id_dsa.pub user@192.168.1.x:/home/user/.ssh/authorized_keys | ||
- | mot_de_passe | ||
- | |||
- | Voilà votre clé est en place, maintenant passons à la sécurité de votre système. | ||
- | |||
- | ===== Sécuriser SSH ===== | ||
- | |||
- | Il suffit d'éditer le fichier sshd_config en root sur le PC distant. Le fichier se trouve dans le dossier ///etc/ssh/// | ||
- | # nano /etc/ssh/sshd_config | ||
- | Puis de modifier les arguments suivant «le cas est pris pour une connection __uniquement par clé__» : | ||
- | |||
- | PermitRootLogin no -> évite la connection 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 connection 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 connection, normalement 6 par défaut | ||
- | |||
- | * 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 ( défaut 22 ) | ||
- | Nous allons le mettre ici à 10010 | ||
- | Port 10010 | ||
- | Une fois configuré il vous suffit de relancer SSH, à faire en root : | ||
- | # /etc/init.d/sshd restart | ||
- | |||
- | ===== Navigation via SSH ===== | ||
- | |||
- | Pour voir les fichiers avec konqueror et Nautilus rien de plus simple | ||
- | ==== Konqueror ==== | ||
- | |||
- | $ fish://user@192.168.1.x | ||
- | | ||
- | ==== Nautilus ==== | ||
- | |||
- | $ ssh://user@192.168.1.x:22 | ||
- | |||
- | ==== Terminal ==== | ||
- | |||
- | Pour te connecter sur un serveur ssh qui n'a pas le port 22 par défaut. | ||
- | ssh mattux@mon.serveur.org -p 10010 | ||
- | |||
- | -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 crypté 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. | ||
- | # ssh -L 5901:localhost:5900 user@80.80.80.80 | ||
- | 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 : [[commande:scp|SCP]] | ||
- | |||
- | * Pour ''MONTER'' les fichiers servez-vous de : [[commande:sshfs|SSHFS]] | ||
- | |||
- | ===== Lien forum ===== | ||
- | http://debian-facile.org/forum/viewtopic.php?id=1583 |