Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
ssh_avance [Le 14/04/2012, 08:45]
sx1 créée
ssh_avance [Le 11/09/2022, 12:01] (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 17: Ligne 17:
 ===== Restriction d'​accès SSH ===== ===== Restriction d'​accès SSH =====
  
-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.\\+Quand on utilise SSH avec une [[:ssh#​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 **~/​.ssh/​authorized_keys** : 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 27: Ligne 27:
 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.\\ 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 comme expliqué sur la page relatives aux bases de SSH +Créez un <compte de servicesur un ordinateur, créez une paire de clés comme expliqué sur la page relatives aux bases de SSH ([[:​ssh#​authentification_par_un_systeme_de_cles_publiqueprivee|SSH]]),​ sans //​passphrase//,​ (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)
-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 **/​home/<​nomducomptedeservicecréé>​/​.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]])
- +
-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.
  
 <note importante>​ <note importante>​
-Avoir une clef privée non protégée peut être une faille de sécurité. ​Les intrus ​devront seulement obtenir l'accès à la clé privée ​et pourront ​accéder ​aux ordinateurs distants.+Avoir une clef privée non protégée peut être une faille de sécurité. ​Il suffira donc aux intrus ​d'obtenir ​la clef privée ​pour accéder ​à l'​ordinateur distant.
 </​note>​ </​note>​
  
 +Dans cette configuration,​ il est impératif de verrouiller de façon très stricte les actions réalisables sur la machine distante par l'​utilisateur créé lors de la création du <compte de service> . Par exemple, il sera préférable de copier ou déplacer les fichiers à récupérer dans un dossier isolé, auquel ce profil aura accès, plutôt que de lui laisser l'​accès aux répertoires critiques (données utilisateurs,​ SGBD par exemple). Il est encore mieux que ce répertoire soit sur une machine extérieure 8-) : Une machine copie les fichiers sur un serveur distant ; L'​autre machine vient les récupérer plus tard. Ainsi, personne n'est autorisé à se connecter sur nos machines. Seul le serveur distant, qui sert de relais, est susceptible d'​être piratée et uniquement pour les fichiers que nous y avons mis.
 ===== Utiliser le ssh-agent ===== ===== 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.  +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**. ​+ 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. 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>​ <​code>​
Ligne 54: Ligne 52:
 L'​agent ssh ne transmet pas votre passphrase sur le réseau ni votre clé privée. 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 : +Vous pouvez savoir quel utilisateur est déclaré avec ssh-agent à l'aide de la commande suivante :
 <​code>​ <​code>​
 ssh-add -l ssh-add -l
Ligne 75: Ligne 73:
  
 Vous pouvez : Vous pouvez :
-  * Utiliser le mode natif de base de SSH, voir [[ssh|SSH]] ​+  * 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 121: Ligne 119:
 ===== Tunnéliser sa connexion internet par SSH (sans Squid) ===== ===== Tunnéliser sa connexion internet par SSH (sans Squid) =====
  
-[[#​Tunnéliser sa connexion internet par SSH avec l'aide de Squid|La partie précédente]] consiste à installer un [[http://​fr.wikipedia.org/​wiki/​Proxy|mandataire HTTP]] sur le serveur et de s'y connecter via SSH. Cependant, SSH lui-même peut jouer le rôle de mandataire, ce qui évite l'​installation d'un logiciel supplémentaire.+[[#​Tunnéliser sa connexion internet par SSH avec l'aide de Squid|La partie précédente]] consiste à installer un [[https://​fr.wikipedia.org/​wiki/​Proxy|mandataire HTTP]] sur le serveur et de s'y connecter via SSH. Cependant, SSH lui-même peut jouer le rôle de mandataire, ce qui évite l'​installation d'un logiciel supplémentaire.
  
 ==== Partie serveur ==== ==== Partie serveur ====
Ligne 143: Ligne 141:
 La connexion fonctionnera tant que le tunnel restera ouvert : si vous fermez le terminal ayant servi à ouvrir le tunnel, vous fermerez le tunnel.\\ 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://​www.monip.org|mon ip.org]] et constatez que l' adresse IP affichée n'est pas la même que lorsque vous naviguez sans mandataire. Pour vous assurer que le tunnel remplit son office, rendez-vous sur une page telle que [[http://​www.monip.org|mon ip.org]] et constatez que l' adresse IP affichée n'est pas la même que lorsque vous naviguez sans mandataire.
 +
  
 === Sous Windows, avec Putty === === Sous Windows, avec Putty ===
Ligne 156: Ligne 155:
 ==== 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 application graphique bien pratique pour gérer les tunnels SSH : au lieu de les recréer chaque fois on utilise [[:remmina|Remmina]].
  
 ===== 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 183: Ligne 182:
 ===== Accéder à un serveur par rebond ssh (serveur ssh intermédiaire) ===== ===== 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 ​(aussi appelé relais, passerelle, relay ou gateway), on réalise normalement 2 connexions ssh ce qui peut devenir fastidieux lorsqu'​on doit réaliser cette opération régulièrement.\\
- +
-Pour accéder à un serveur par rebond sur un serveur ssh intermédiaire,​ on réalise normalement 2 connexions ssh ce qui peut devenir fastidieux lorsqu'​on doit réaliser cette opération régulièrement.\\+
 SSH peut cependant faciliter cette opération en effectuant au choix une des deux manipulations : SSH peut cependant faciliter cette opération en effectuant au choix une des deux manipulations :
   - une seule ligne de commande pour réaliser une [[#​connexion ssh vers le serveur de destination via un serveur ssh intermédiaire]]   - une seule ligne de commande pour réaliser une [[#​connexion ssh vers le serveur de destination via un serveur ssh intermédiaire]]
Ligne 196: Ligne 193:
 <note important>​Si vous obtenez l'​erreur suivante : <​code>​Pseudo-terminal will not be allocated because stdin is not a terminal.</​code>​ rajouter l'​option ''​-t''​ sur la connexion ssh du serveur intermédiaire,​ ce qui donne : <​code>​ssh -t <​srv_intermédiaire>​ ssh <​srv_final></​code></​note>​ <note important>​Si vous obtenez l'​erreur suivante : <​code>​Pseudo-terminal will not be allocated because stdin is not a terminal.</​code>​ rajouter l'​option ''​-t''​ sur la connexion ssh du serveur intermédiaire,​ ce qui donne : <​code>​ssh -t <​srv_intermédiaire>​ ssh <​srv_final></​code></​note>​
  
-==== Connexion ssh directement ​vers le serveur de destination ==== +==== Connexion ssh en mode Bastion ​vers le serveur de destination ==== 
-Le fonctionnement n'est pas du tout le même que [[#​Connexion ssh vers le serveur de destination via un serveur ssh intermédiaire|précédemment]] car ssh parlera ici directement ​avec le serveur final.\\+Le fonctionnement n'est pas du tout le même que [[#​Connexion ssh vers le serveur de destination via un serveur ssh intermédiaire|précédemment]] car ssh communique ​avec le serveur final. Le serveur intermédiaire est appelé l'​hôte bastion.\\
 Indiquez directement sur le poste client la commande ''​ProxyCommand''​ en [[:​tutoriel:​comment_modifier_un_fichier|modifiant le fichier]] Indiquez directement sur le poste client la commande ''​ProxyCommand''​ en [[:​tutoriel:​comment_modifier_un_fichier|modifiant le fichier]]
-<file bash ~/​.ssh/​config>​+Il s'​agira donc de modifier sur votre client ​<file bash ~/​.ssh/​config>​
 Host <​srv_final>​ Host <​srv_final>​
-ProxyCommand ssh <​srv_intermédiaire>​ nc %h %p+ProxyCommand ssh -W %h:%p <​srv_bastion>​
 </​file>​ </​file>​
-L'​utilisation de la commande ''​nc''​ (''​netcat''​),​ qui doit être présente sur le serveur intermédiaire,​ permet ainsi de se connecter sur le port ssh du serveur final et établit juste un lien entre le client et le serveur final.\\  +<​note>​ 
-<​note ​important>Avec le [[http://​blog.rootshell.be/​2010/​03/​08/​openssh-new-feature-netcat-mode/​|"​mode netcat intégré"​ introduit avec la version 5.4]], ​l'option "nc" n'est plus nécessaire.\\ +Avec le [[https://​blog.rootshell.be/​2010/​03/​08/​openssh-new-feature-netcat-mode/​|"​mode netcat intégré"​ introduit avec la version 5.4]]. Avant la version OpenSSH 5.4on pouvait utiliser la commande ''​nc'' ​(paquet d'​installation ''​netcat''​) ​sur le client ​<file bash ~/​.ssh/​config>​
-Il s'agira donc de modifier ​sur le serveur intermédiraire ​<file bash ~/​.ssh/​config>​+
 Host <​srv_final>​ Host <​srv_final>​
-ProxyCommand ssh -W %h:%p <​srv_intermédiaire>​+ProxyCommand ssh <​srv_intermédiaire>​ nc %h %p
 </​file>​ </​file>​
 +L'​utilisation de la commande ''​nc''​ permettait ainsi de se connecter sur le port ssh du serveur final et n'​aboutissait que si le paquet ''​netcat''​ et l'​option TCP ''​AllowTcpForwarding''​ étaient installés sur l'​hôte intermédiaire.\\ ​
 </​note>​ </​note>​
 +<note tip>
 +Les différences entre les versions de la commande proxy sont expliquées dans [[https://​stackoverflow.com/​questions/​22635613/​what-is-the-difference-between-ssh-proxycommand-w-nc-exec-nc|Définition de la commande proxy sur Stackoverflow (anglais)]]\\
 +</​note>​
 +
 +Contributeurs:​ [[https://​github.com/​b23prodtm|b23p]]
 +
 +===== Accéder à un serveur ssh dont les ports entrants sont bloqués =====
 +Il peut arriver que les ports des connexions entrantes sur un serveur SSH soient bloqués ((le cas peut se présenter notamment en entreprise ou derrière une box)). Cependant, il est rare que les ports sortants soient fermés. Dans ce cas, il est possible de faire appel à du << //​Reverse-SSH//​ >> tel qu'​expliqué dans **[[:​tutoriel:​reverse_ssh|cette page]]**
 +
 +===== Exécuter une même commande simultanément sur plusieurs machines via ssh =====
 +Dans la gestion d'un parc de plusieurs machines il peut être intéressant de leur envoyer la même commande en simultané. Il existe pour ça le logiciel **[[:​Pssh]]**
  
 ===== Problèmes et solutions ===== ===== Problèmes et solutions =====
Ligne 223: Ligne 231:
  
   * [[http://​www.dsfc.net/​infrastructure/​securite/​chroot-ssh-protocolesftp/​|Tuto]]. « Chrooter » un utilisateur en ssh facilement.   * [[http://​www.dsfc.net/​infrastructure/​securite/​chroot-ssh-protocolesftp/​|Tuto]]. « Chrooter » un utilisateur en ssh facilement.
-  * [[http://​technique.arscenic.org/​connexion-distante-au-serveur-ssh/​|Config]]. Configuration et sécurisation de ssh.+  * [[https://​technique.arscenic.org/​connexion-distante-au-serveur-ssh/​|Config]]. Configuration et sécurisation de ssh.
   * [[http://​www.refreshinglyblue.com/​2007/​5/​18/​long-delay-before-ssh-authentication|Source]] pour le problème de [[#délai lors de la connexion]]   * [[http://​www.refreshinglyblue.com/​2007/​5/​18/​long-delay-before-ssh-authentication|Source]] pour le problème de [[#délai lors de la connexion]]
  
 ---- ----
 //​Contributeurs : [[:​utilisateurs:​sx1]] //​Contributeurs : [[:​utilisateurs:​sx1]]
  • ssh_avance.1334385945.txt.gz
  • Dernière modification: Le 14/04/2012, 08:45
  • par sx1