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
Prochaine révision Les deux révisions suivantes
ssh_avance [Le 17/11/2017, 15:33]
91.244.238.17 [Utiliser le ssh-agent]
ssh_avance [Le 16/06/2019, 11:51]
82.64.49.77 [Connexion ssh en mode Bastion vers le serveur de destination]
Ligne 37: Ligne 37:
  
 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. 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 =====
  
-**Gras**MIA KHALIFA+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. 
 + 
 +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) 
 + 
 +<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//​. 
 +  * Si vous voulez rentrer votre //​passphrase//​ une fois juste après l'​ouverture de session, vous pouvez ajouter un appel à **ssh-add** comme ceci : 
 +    * Cliquez sur //Système → Préférences → Sessions → Programme au démarrage//​. 
 +    * Cliquez sur « Ajouter ». 
 +    * Entrez la commande « ''​ssh-add''​ ». 
 + 
 +À la prochaine ouverture de session, vous devrez taper votre //​passphrase//​. 
 +</​note>​ 
 + 
 +===== 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'​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é.
  
 ===== Tunnéliser sa connexion internet par SSH avec l'aide de Squid ===== ===== Tunnéliser sa connexion internet par SSH avec l'aide de Squid =====
Ligne 156: 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 [[http://​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 votre client ​ <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 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)]]\\
 +|ce post en anglais]].
 </​note>​ </​note>​
- 
 ===== Accéder à un serveur ssh dont les ports entrants sont bloqués ===== ===== 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]]** 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]]**
  • ssh_avance.txt
  • Dernière modification: Le 11/09/2022, 12:01
  • par moths-art