Différences

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

Lien vers cette vue comparative

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, 15:55]
sx1 [Tunnéliser sa connexion internet par SSH avec l'aide de Squid]
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 ordinateurvous 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é connuele 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 84: Ligne 102:
 <​code>​sudo squid -z</​code>​ <​code>​sudo squid -z</​code>​
  
-Grâce à SSH, les connexions reçues par Squid seront des connexions provenant du serveur lui-même. Mais, par défaut, Squid n'​accepte que les connexions ​//loopback// //FIXME traduction?//​. On devrait alors quand même ajouter une autorisation pour l'​adresse IP non //​loopback//​ (127.0.0.1) ​du serveur. Vous ouvrez donc le fichier de configuration ​//​FIXME ​squid.conf ?// et vous ajoutez ces deux lignes :+Grâce à SSH, les connexions reçues par Squid seront des connexions provenant du serveur lui-même. Mais, par défaut, Squid n'​accepte que les connexions ​sur la boucle locale 127.0.0.1 en Ipv4 (loopback). On devrait alors quand même ajouter une autorisation pour l'​adresse IP du serveur ​qui n'est pas celle de bouclage. Vous ouvrez donc le fichier de configuration ​[[:squid#​configuration|Squid configuration]] ​et vous ajoutez ces deux lignes :
  
 <​file>​ <​file>​
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 (TSEest 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.
Ligne 160: Ligne 178:
  
 <​code>​sudo ssh -L 80:​192.168.1.1:​80 username@IP_Publique_Box</​code>​ <​code>​sudo ssh -L 80:​192.168.1.1:​80 username@IP_Publique_Box</​code>​
-FIXME Pas d'​intérêt à mettre # pour indiquer qu'on est root et mettre ensuite sudo ;-) Et pas sûr que tout le monde connaisse cette subtile différence entre # et $ 
  
 Puis en ouvrant son navigateur préféré et en entrant comme adresse **%%http://​localhost%%** Puis en ouvrant son navigateur préféré et en entrant comme adresse **%%http://​localhost%%**
  • utilisateurs/sx1/ssh_avance.1331996137.txt.gz
  • Dernière modification: Le 17/03/2012, 15:55
  • par sx1