Différences
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 | ||
utilisateurs:sx1:ssh_avance [Le 17/03/2012, 16:05] sx1 [Accéder à une machine Windows via RDP] |
utilisateurs:sx1:ssh_avance [Le 11/09/2022, 13:12] (Version actuelle) moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
Cette page présente les usages avancés ou particuliers de SSH répondant à un besoin très précis.\\ | Cette page présente les usages avancés ou particuliers de SSH répondant à un besoin très précis.\\ | ||
- | Pour plus d'information sur les usages les plus courants de SSH et sa configuration de base reportez-vous à [[:ssh_bases|cette page]]. | + | Pour plus d'information sur les usages les plus courants de SSH et sa configuration de base reportez-vous à [[:ssh|cette page]]. |
===== Se connecter en ssh à travers un mandataire http (proxy) ===== | ===== Se connecter en ssh à travers un mandataire http (proxy) ===== | ||
Ligne 17: | Ligne 17: | ||
===== Restriction d'accès SSH ===== | ===== Restriction d'accès SSH ===== | ||
- | Quand on utilise SSH avec une [[#Restriction d'accès SSH|authentification par clé publique]] //FIME bon lien ?// , le serveur distant peut limiter l'utilisation de certaines commandes permises.\\ | + | Quand on utilise SSH avec une [[ssh_bases#authentification_par_un_systeme_de_cles_publiqueprivee|authentification par clés]] , 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 //FIXME quel dossier ?// **authorized_keys2** : | + | Si vous maintenez un dépôt [[:cvs]] , vous pourriez utiliser des lignes comme ceci dans le fichier **~/.ssh/authorized_keys** : |
<file>command="/usr/bin/cvs server" ssh-dss <nom_commande> </file> | <file>command="/usr/bin/cvs server" ssh-dss <nom_commande> </file> | ||
Ligne 25: | Ligne 25: | ||
===== Accès automatique pour des scripts ===== | ===== Accès automatique pour des scripts ===== | ||
- | L'authentification par clé publique (voir ci-dessus) //FIXME mettre directement lien// peut également être employée pour automatiser les tâches qui exigeraient habituellement l'introduction au clavier d'un mot de passe.\\ | + | L'authentification par clé publique (voir [[:ssh#authentification_par_un_systeme_de_cles_publiqueprivee|SSH]]) 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 ce que vous avez à faire c'est d'établir la confiance entre ces deux ordinateurs.\\ | Imaginez vouloir copier un dossier à partir d'un ordinateur distant tous les jours à minuit. Tout ce 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és //FIXME ou lien interne// par la commande | + | 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 |
- | <code>ssh-keygen -t dsa</code> | + | et quand on vous demande de rentrer la //passphrase// tapez juste sur la touche « Entrée ». |
- | et quand on vous demande de rentrer la //passphrase// tapez juste sur la touche « Entrée ». Ceci fera que votre clé privée ne sera pas protégée. Ajoutez la clé publique de l'autre ordinateur dans le fichier //FIXME Dossier ?// **authorized_keys** par la commande //FIXME ou lien interne// : | + | |
- | <code>ssh-copy-id</code> | + | Ceci fera que votre clé privée ne sera pas protégée. |
+ | |||
+ | Ajoutez la clé publique de l'autre ordinateur dans le fichier **~/.ssh/authorized_keys** par la commande **ssh-copy-id** comme expliqué sur la page relative aux bases sur SSH ([[:ssh#authentification_par_un_systeme_de_cles_publiqueprivee|SSH]]) | ||
Maintenant vous pouvez utiliser SSH sur cette machine sans une //passphrase// à taper. Ajoutez une référence à SSH dans votre //[[:cron|crontab]]// et vous êtes prêt. | Maintenant vous pouvez utiliser SSH sur cette machine sans une //passphrase// à taper. Ajoutez une référence à SSH dans votre //[[:cron|crontab]]// et vous êtes prêt. | ||
Ligne 39: | Ligne 41: | ||
===== Utiliser le ssh-agent ===== | ===== Utiliser le ssh-agent ===== | ||
- | Si vous devez fréquemment copier des fichiers avec SSH ou accéder à d'autres ordinateurs de votre réseau, 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. | + | 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 //passphrase// à ssh-agent en employant la commande **ssh-add** et tout ce que vous commencez comme sous-processus de **SSH agent** (donc SSH, SCP, etc.) se rappellera automatiquement de la passphrase. | ||
+ | <code> | ||
+ | ~$ ssh-add | ||
+ | Enter passphrase for /home/<nom_utilisateur>/.ssh/id_rsa: | ||
+ | Identity added: /home/<nom_utilisateur>/.ssh/id_rsa (/home/<nom_utilisateur>/.ssh/id_rsa) | ||
+ | </code> | ||
+ | Une fois effectué cette opération un seule fois, vous n'aurez pas besoin de vous inquiéter de l'agent. | ||
+ | Votre session est prête pour exploiter le **ssh-agent** automatiquement. | ||
- | Trop théorique ? Bien, vous n'aurez pas besoin de vous inquiéter de l'agent. Votre session [[:xorg|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 ? :-) | + | L'agent ssh ne transmet pas votre passphrase sur le réseau ni votre clé privée. |
+ | |||
+ | Vous pouvez savoir quel utilisateur est déclaré avec ssh-agent à l'aide de la commande suivante : | ||
+ | <code> | ||
+ | ssh-add -l | ||
+ | </code> | ||
+ | qui renvoi l'empreinte de la clé connue, le nom de l'utilisateur et le type de clé de chiffrement utilisée. | ||
+ | Exemple : | ||
+ | 2048 1f:98:46:a2:b9:25:0e:68:35:20:fa:9e:b0:cb:5e:3e albert@monordi (RSA) | ||
- | FIXME Trop floue pour moi. un exemple de commande ou il faut juste taper ssh-add une fois ? | ||
<note importante> | <note importante> | ||
* 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//. | * 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//. | ||
Ligne 57: | Ligne 75: | ||
Vous pouvez : | Vous pouvez : | ||
- | * Utiliser le mode natif de base de SSH, voir [[ssh_bases|SSH bases]] | + | * 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'utilisation du ssh au sftp et dans un répertoire déterminé.\\ Voir [[http://www.dsfc.net/infrastructure/securite/chroot-ssh-protocolesftp/|sftp avec Chroot]] pour les détails. | * Utiliser le mode natif avancé de SSH : les directives //Chroot// et //Match// de SSH, qui permettent de limiter pour certains utilisateurs l'utilisation du ssh au sftp et dans un répertoire déterminé.\\ Voir [[http://www.dsfc.net/infrastructure/securite/chroot-ssh-protocolesftp/|sftp avec Chroot]] pour les détails. | ||
* Utiliser [[:mysecureshell_sftp-server|MySecureShell]]. MysecureShell, qui s'installe en plus de ''openssh-server'', ajoute une couche au dessus de SSH sur le serveur et demande l'emploi de Java sur le client pour disposer d'une interface graphique de paramétrage de SSH/SFTP.\\ Cela n'apporte toutefois aucune fonction ni sécurité supplémentaire par rapport au mode natif avancé. | * Utiliser [[:mysecureshell_sftp-server|MySecureShell]]. MysecureShell, qui s'installe en plus de ''openssh-server'', ajoute une couche au dessus de SSH sur le serveur et demande l'emploi de Java sur le client pour disposer d'une interface graphique de paramétrage de SSH/SFTP.\\ Cela n'apporte toutefois aucune fonction ni sécurité supplémentaire par rapport au mode natif avancé. | ||
Ligne 65: | Ligne 83: | ||
Tunnéliser sa connexion Web est très utile dans quelques situations : | Tunnéliser sa connexion Web est très utile dans quelques situations : | ||
- | * l'administrateur du réseau où vous êtes vous empêche d'accéder à certains sites. | + | * l'administrateur du réseau où vous êtes vous empêche d'accéder à certains sites. |
* votre connexion Web est peu ou pas sécurisée (wifi sans chiffrement (//encryption//) ou par chiffrement WEP). | * votre connexion Web est peu ou pas sécurisée (wifi sans chiffrement (//encryption//) ou par chiffrement WEP). | ||
Ligne 138: | Ligne 156: | ||
==== Gestion des tunnels ==== | ==== 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 [[:gstm|Graphical SSH Tunnel Manager]]. | + | 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'extérieur sans NAT : tunnel ===== | ===== Accéder à ses ressources réseau locales depuis l'extérieur sans NAT : tunnel ===== | ||
Ligne 148: | Ligne 166: | ||
==== Accéder à une machine Windows via RDP ==== | ==== Accéder à une machine Windows via RDP ==== | ||
- | Donc nous avons un réseau avec une machine sous Windows (XP, Vista...) avec comme adresse locale ''192.168.1.2'' où TSE //FIXME TSE ?// est activé mais accessible uniquement en local, un serveur ssh sous Ubuntu avec comme IP locale ''192.168.1.3'', et une Livebox (ou autre) dont seul le port ssh (22) est traduit (en franglais on dit translaté, Cf.[[wpfr>Network_address_translation]]) pour un accès au serveur ssh depuis l'extérieur. | + | Donc nous avons un réseau avec une machine sous Windows (XP, Vista...) avec comme adresse locale ''192.168.1.2'' où le client RDP du Terminal Service (TSE) est activé mais accessible uniquement en local, un serveur ssh sous Ubuntu avec comme IP locale ''192.168.1.3'', et une Livebox (ou autre) dont seul le port ssh (22) est traduit (en franglais on dit translaté, Cf.[[wpfr>Network_address_translation]]) pour un accès au serveur ssh depuis l'extérieur. |
Nous voulons depuis l'extérieur accéder à la machine Windows via RDP. | Nous voulons depuis l'extérieur accéder à la machine Windows via RDP. |