Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
utilisateurs:sx1:ssh_avance [Le 25/02/2012, 23:14] – sx1 | utilisateurs:sx1:ssh_avance [Le 25/07/2020, 17:26] (Version actuelle) – [Gestion des tunnels] Enlevé hyperlien GSTM spnux | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== Fonctionnalités avancées de SSH ====== | ||
+ | |||
+ | Cette page présente les usages avancés ou particuliers de SSH répondant à un besoin très précis.\\ | ||
+ | Pour plus d' | ||
+ | |||
+ | ===== Se connecter en ssh à travers un mandataire http (proxy) ===== | ||
+ | |||
+ | Il peut arriver (en entreprise, dans un cybercafé...) qu'il y ait un mandataire (« proxy ») HTTP. Pour initier une connexion vers un poste de l' | ||
+ | * [[tutoriel: | ||
+ | * [[tutoriel: | ||
+ | ProxyCommand connect-proxy -H adresse_du_proxy: | ||
+ | Vous pouvez maintenant vous connecter à travers votre mandataire en toute transparence, | ||
+ | |||
+ | ===== Restriction d' | ||
+ | |||
+ | Quand on utilise SSH avec une [[ssh_bases# | ||
+ | Si vous maintenez un dépôt [[:cvs]] , vous pourriez utiliser des lignes comme ceci dans le fichier **~/ | ||
+ | < | ||
+ | |||
+ | Ceci permettrait que seule cette commande puisse être utilisée à l' | ||
+ | |||
+ | ===== Accès automatique pour des scripts ===== | ||
+ | |||
+ | L' | ||
+ | Imaginez vouloir copier un dossier à partir d'un ordinateur distant tous les jours à minuit. Tout ce que vous avez à faire c'est d' | ||
+ | Créez un compte de service sur un ordinateur, créez une paire de clés comme expliqué sur la page relatives aux bases de SSH | ||
+ | et quand on vous demande de rentrer la // | ||
+ | |||
+ | Ceci fera que votre clé privée ne sera pas protégée. | ||
+ | |||
+ | Ajoutez la clé publique de l' | ||
+ | Maintenant vous pouvez utiliser SSH sur cette machine sans une // | ||
+ | |||
+ | <note importante> | ||
+ | Avoir une clef privée non protégée peut être une faille de sécurité. Les intrus devront seulement obtenir l' | ||
+ | </ | ||
+ | |||
+ | ===== Utiliser le ssh-agent ===== | ||
+ | |||
+ | Si vous devez fréquemment ouvrir des sessions distantes avec SSH ou copier des fichiers avec SCP (ou toute autre utilisation de SSH) il existe une solution pour ne pas avoir à saisir votre passphrase à chaque utilisation. | ||
+ | en utilisant **SSH agent**. | ||
+ | Vous devez indiquer une fois votre // | ||
+ | < | ||
+ | ~$ ssh-add | ||
+ | Enter passphrase for / | ||
+ | Identity added: / | ||
+ | </ | ||
+ | Une fois effectué cette opération un seule fois, vous n' | ||
+ | Votre session est prête pour exploiter le **ssh-agent** automatiquement. | ||
+ | |||
+ | L' | ||
+ | |||
+ | Vous pouvez savoir quel utilisateur est déclaré avec ssh-agent à l'aide de la commande suivante : | ||
+ | < | ||
+ | ssh-add -l | ||
+ | </ | ||
+ | qui renvoi l' | ||
+ | Exemple : | ||
+ | 2048 1f: | ||
+ | |||
+ | <note importante> | ||
+ | * Vous devrez bloquer votre session pendant vos absences car d' | ||
+ | * Si vous voulez rentrer votre // | ||
+ | * Cliquez sur //Système → Préférences → Sessions → Programme au démarrage// | ||
+ | * Cliquez sur « Ajouter ». | ||
+ | * Entrez la commande « '' | ||
+ | |||
+ | À la prochaine ouverture de session, vous devrez taper votre // | ||
+ | </ | ||
+ | |||
+ | ===== Utiliser SSH pour faire du SFTP (Transfert de fichier sécurisé) ===== | ||
+ | |||
+ | Vous pouvez : | ||
+ | * Utiliser le mode natif de base de SSH, voir [[ssh|SSH]] | ||
+ | * Utiliser le mode natif avancé de SSH : les directives //Chroot// et //Match// de SSH, qui permettent de limiter pour certains utilisateurs l' | ||
+ | * Utiliser [[: | ||
+ | |||
+ | ===== Tunnéliser sa connexion internet par SSH avec l'aide de Squid ===== | ||
+ | |||
+ | Tunnéliser sa connexion Web est très utile dans quelques situations : | ||
+ | |||
+ | * l' | ||
+ | * votre connexion Web est peu ou pas sécurisée (wifi sans chiffrement (// | ||
+ | |||
+ | On va donc installer le serveur de médiation Squid (serveur mandataire) sur une machine Ubuntu (qui sera le serveur) à laquelle on accèdera par une machine distante possédant un client SSH et un navigateur Web. Dans l' | ||
+ | |||
+ | On obtiendra alors un accès sécurisé à un mandataire distant (le serveur sous Ubuntu) qui se connectera aux sites Web et renverra le résultat à votre navigateur. | ||
+ | |||
+ | Ayez bien à l' | ||
+ | |||
+ | ==== Partie serveur ==== | ||
+ | |||
+ | Premièrement, | ||
+ | |||
+ | Normalement si tout se déroule bien, Squid devrait être fonctionnel.\\ | ||
+ | Il est cependant probable qu'une erreur arrive car le programme de configuration n' | ||
+ | < | ||
+ | Après l' | ||
+ | < | ||
+ | |||
+ | Grâce à SSH, les connexions reçues par Squid seront des connexions provenant du serveur lui-même. Mais, par défaut, Squid n' | ||
+ | |||
+ | < | ||
+ | acl ordi src 192.168.1.1 | ||
+ | http_access allow ordi | ||
+ | </ | ||
+ | |||
+ | Dans l' | ||
+ | < | ||
+ | ou le redémarrer par : | ||
+ | < | ||
+ | Squid est normalement prêt à recevoir les connexions venant de la machine hôte. | ||
+ | |||
+ | ==== Partie client ==== | ||
+ | |||
+ | FIXME **À rédiger, manquant.** | ||
+ | |||
+ | ===== Tunnéliser sa connexion internet par SSH (sans Squid) ===== | ||
+ | |||
+ | [[# | ||
+ | |||
+ | ==== Partie serveur ==== | ||
+ | |||
+ | Il n'y a en principe rien à faire. Cette fonctionnalité est activée par défaut sous Ubuntu. | ||
+ | |||
+ | ==== Partie client ==== | ||
+ | |||
+ | Cette fois, le mandataire à prendre en compte notamment lors de la configuration du navigateur est de type // | ||
+ | |||
+ | === Sous Linux (dont Ubuntu) === | ||
+ | |||
+ | Utiliser la commande '' | ||
+ | < | ||
+ | # Ouverture d'un tunnel ssh (sur le port 1234 local) vers un serveur qui autorise la connexion | ||
+ | # le port (1234 dans cet exemple) est choisi arbitrairement, | ||
+ | ssh -D 1234 monuser@monserver.net | ||
+ | </ | ||
+ | Configurer ensuite le navigateur, gestionnaire de courrier, etc., pour utiliser un mandataire de type //SOCKS 5//, adresse : // | ||
+ | |||
+ | La connexion fonctionnera tant que le tunnel restera ouvert : si vous fermez le terminal ayant servi à ouvrir le tunnel, vous fermerez le tunnel.\\ | ||
+ | Pour vous assurer que le tunnel remplit son office, rendez-vous sur une page telle que [[http:// | ||
+ | |||
+ | === Sous Windows, avec Putty === | ||
+ | |||
+ | La configuration est la même qu'au [[#Partie client|point 6.2]], sauf qu'il faut cocher la case " | ||
+ | |||
+ | < | ||
+ | Vous pouvez ouvrir plusieurs tunnels utilisant des ports différents ou des utilisateurs différents. Ainsi, la navigation peut utiliser un tunnel vers un serveur, la messagerie un tunnel vers un autre serveur, etc. | ||
+ | |||
+ | Il est possible aussi d' | ||
+ | </ | ||
+ | |||
+ | ==== Gestion des tunnels ==== | ||
+ | |||
+ | Il existe une petite application graphique bien pratique pour gérer les tunnels SSH : au lieu de les recréer chaque fois on utilise Graphical SSH Tunnel Manager. | ||
+ | |||
+ | ===== Accéder à ses ressources réseau locales depuis l' | ||
+ | |||
+ | Il est intéressant de pouvoir accéder à des ressources réseau locales (RDP, VNC, Administration périphérique réseau comme les box, etc.) sans pour autant rendre ces périphériques directement accessibles depuis Internet. SSH permet l' | ||
+ | |||
+ | Prenons un exemple. | ||
+ | |||
+ | ==== Accéder à une machine Windows via RDP ==== | ||
+ | |||
+ | Donc nous avons un réseau avec une machine sous Windows (XP, Vista...) avec comme adresse locale '' | ||
+ | |||
+ | Nous voulons depuis l' | ||
+ | |||
+ | Nous allons pour cela utiliser la tunnélisation. À partir de votre station depuis l' | ||
+ | < | ||
+ | |||
+ | Il suffit ensuite d' | ||
+ | |||
+ | Nous pouvons de la même façon accéder à la configuration de notre Box sans pour autant devoir la rendre accessible depuis Internet (attention seul '' | ||
+ | |||
+ | < | ||
+ | |||
+ | Puis en ouvrant son navigateur préféré et en entrant comme adresse **%%http:// | ||
+ | |||
+ | ===== Accéder à un serveur par rebond ssh (serveur ssh intermédiaire) ===== | ||
+ | |||
+ | FIXME Expliquer dans quel cadre ces opérations peuvent servir. | ||
+ | |||
+ | Pour accéder à un serveur par rebond sur un serveur ssh intermédiaire, | ||
+ | SSH peut cependant faciliter cette opération en effectuant au choix une des deux manipulations : | ||
+ | - une seule ligne de commande pour réaliser une [[# | ||
+ | - une modification de fichier pour provoquer une [[# | ||
+ | <note help> | ||
+ | |||
+ | ==== Connexion ssh vers le serveur de destination via un serveur ssh intermédiaire ==== | ||
+ | |||
+ | Il s'agit d' exécuter sur le poste client la commande ssh vers le serveur final < | ||
+ | <note important> | ||
+ | |||
+ | ==== Connexion ssh directement vers le serveur de destination ==== | ||
+ | Le fonctionnement n'est pas du tout le même que [[# | ||
+ | Indiquez directement sur le poste client la commande '' | ||
+ | <file bash ~/ | ||
+ | Host < | ||
+ | ProxyCommand ssh < | ||
+ | </ | ||
+ | L' | ||
+ | <note important> | ||
+ | Il s' | ||
+ | Host < | ||
+ | ProxyCommand ssh -W %h:%p < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Problèmes et solutions ===== | ||
+ | |||
+ | ==== Délai lors de la connexion ==== | ||
+ | |||
+ | Si vous avez un délai de plusieurs secondes avant que la connexion SSH ne se fasse, essayez d' | ||
+ | < | ||
+ | |||
+ | Ceci désactive l' | ||
+ | |||
+ | ==== Liens ==== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ---- | ||
+ | // |