logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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
doc:reseau:ssh:client [07/01/2014 21:45]
bendia
doc:reseau:ssh:client [09/07/2016 16:06]
cemoi [Installation]
Ligne 1: Ligne 1:
-====== ​SSH coté client======+====== ​ssh-client ​: se connecter pour administrer à distance ​======
  
   * Objet : Utilisation de ssh comme client   * Objet : Utilisation de ssh comme client
-  * Niveau requis : {{tag>​avisé}}+  * Niveau requis : {{tag>debutant,avisé}}
   * Commentaires : //​Administrer son serveur à distance, établir un tunnel sécurisé pour relayer des ports, etc... //   * Commentaires : //​Administrer son serveur à distance, établir un tunnel sécurisé pour relayer des ports, etc... //
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>en-chantier}} +  * Suivi : {{tag>à-compléter à-tester}} 
-    * Création par <​vous>​ <date>+    * Création par [[user>MaTTuX_]] le 17/06/2007
     * Testé par <...> le <...>     * Testé par <...> le <...>
-  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1583 | Lien vers le forum concernant ce tuto]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))+  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1583 | ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
-=== Nota === 
- 
-Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! 
  
 ===== Introduction ===== ===== Introduction =====
Ligne 29: Ligne 26:
  
 Comme d'​habitude,​ ça tient en une ligne : Comme d'​habitude,​ ça tient en une ligne :
-<code root>​apt-get install openssh-client</​code>​+<code root>apt-get update && ​apt-get install openssh-client</​code>​
  
 ==== Utilisation ==== ==== Utilisation ====
Ligne 37: Ligne 34:
   * soit son nom d'​hôte.   * soit son nom d'​hôte.
 Par exemple, pour se connecter au serveur Debian, vous pouvez lui envoyer des [[:​doc:​reseau:​ping]] via son IP ainsi : Par exemple, pour se connecter au serveur Debian, vous pouvez lui envoyer des [[:​doc:​reseau:​ping]] via son IP ainsi :
-<code user>​ping 128.31.0.51</​code>​+<code user>​ping ​-c 5 128.31.0.51</​code>​
 ou via son nom d'​hôte : ou via son nom d'​hôte :
-<code user>​ping debian.org</​code>​+<code user>​ping ​-c 5 debian.org</​code>​
  
 === Obtenir un shell distant === === Obtenir un shell distant ===
Ligne 60: Ligne 57:
 ==== Authentification ==== ==== Authentification ====
  
-=== Par nom d'​utilisateur/​mot de passe+=== Par nom d'​utilisateur/​mot de passe ===
  
 Le nom d'​utilisateur est spécifié dans la commande de connexion. Le serveur nous demande alors notre mot de passe pour nous connecter, de la même façon que sur une machine locale Le nom d'​utilisateur est spécifié dans la commande de connexion. Le serveur nous demande alors notre mot de passe pour nous connecter, de la même façon que sur une machine locale
  
 <code user>ssh jojo@coincoin</​code>​ <code user>ssh jojo@coincoin</​code>​
 +
 +Ce à quoi le serveur vous répond : 
  
     jojo@coincoin'​s password:     jojo@coincoin'​s password:
-L'​authentification par le couple login/mot de passe est le plus habituel. Mais cela peut poser quelques problèmes en terme de sécurité. Afin d'​être plus simple à mémoriser, les mots de passe sont en effet relativement peu complexe. De plus, nous avons la mauvaise habitude d'​utiliser souvent le même pour plusieus service. Ainsi, il suffit 
  
-=== Rediriger un port local vers un port distant === 
  
-FIXME+=== Par clés asymétriques === 
 + 
 +Les mots de passes sont souvent peu complexes. On peut alors utiliser une paire de clé publique/​privée plus complexe et plus sûre. 
 + 
 +Le principe est le suivant, on génère une paire de clé. La clé privé reste sur votre poste client. La clé publique doit être transférée sur le serveur manuellement ou par le réseau. C'est cette clé qui servira alors à l'​authentification. 
 + 
 +== Création de la clé == 
 + 
 +<note warning>​D'​aprés l'​[[http://​www.ssi.gouv.fr/​entreprise/​guide/​recommandations-pour-un-usage-securise-dopenssh/​|ANSSI]] les clefs dsa sont à éviter (cf page 7 du document). Il est recommandé d'​utiliser des clefs ecdsa en 256 ou rsa en 2048. </​note>​ 
 +Pour une clef ecdsa en 256: 
 +<code user>​ssh-keygen -t ecdsa -b 256</​code>​ 
 +Pour une clef rsa en 2048: 
 +<code user>​ssh-keygen -t rsa -b 2048</​code>​ 
 + 
 +<code user>​ssh-keygen -t dsa -b 2048</​code>​ 
 +<​code>​Generating public/​private dsa key pair. 
 +Enter file in which to save the key (/​home/​user/​.ssh/​id_dsa):​ /​home/​user/​.ssh/​nom_fichier 
 +Enter passphrase (empty for no passphrase):​ (mettre une passphrase qui sera demandée à chaque connexion - ou rien si c'est pas nécessaire pour vous) 
 +</​code>​ 
 +Vous validez 2 fois et vous obtiendrez le résultat en détail de la création de votre clé dsa. 
 + 
 +== Exportation de la cle == 
 + 
 +  * exportation de la clé avec la commande ssh-copy-id : 
 + 
 +Votre clé sera générée en 1024 bits dans votre dossier /​home/​votre_user/​.ssh/​ pour la mettre en place il vous suffit de l'​exporter sur votre pc distant. 
 + 
 +<code user>​ssh-copy-id -i /​home/​user/​.ssh/​id_dsa.pub user@192.168.x.x</​code>​ 
 +  * On vous demande alors votre mot de passe une dernière fois 
 + 
 +<note tip> 
 +Si vous avez changé côté serveur, le port 22, par exemple par le port 1234, il faut alors utiliser la commande : 
 + 
 +<code user> 
 +ssh-copy-id -i /​home/​user/​.ssh/​id_dsa.pub\ 
 + "​-p 1234 user@192.168.x.x"​ 
 +</​code>​  
 +Ne pas oublier les guillemets, sans lesquels la commande ne fonctionnerait pas ! 
 +</​note>​ 
 +À présent, c'est la passphrase qui sera demandée. 
 + 
 +<​note>​ 
 +À savoir **la commande ssh-copy-id** qui vient d'​être utilisée pour exporter la clé publique, est un script qui crée à cette occasion le fichier de type répertoire **~/.ssh** et le fichier **~/​.ssh/​authorized_keys**.\\  
 + 
 +Pour copier le contenu du fichier ~/​.ssh/​id_dsa.pub (créé côté client), sur le serveur par un autre moyen que la commande ssh-copy-id,​\\  
 +il faudra créer soi-même le fichier de type répertoire **~/ssh** et vérifier qu'il ait les droits 700 (lecture + écriture + exécution pour l'​utilisateur).\\  
 +  
 +  * Puis soit créer le fichier **~/​.ssh/​authorized_keys** (''​cp /​chemin/​de/​la/​clé ~/​.ssh/​authorized_keys''​)  
 +  * soit, s'il existe déjà parce qu'il a été créé pour un autre client qui se connecte aussi à ce serveur, y ajouter cette clé :\\ ''​cat /​chemin/​de/​id_rsa.pub >> ~/​.ssh/​authorized_keys''​ 
 +  * enfin donner ou vérifier que "​authorized_keys"​ ait les droits 400 (lecture seule pour l'​utilisateur) 
 +</​note>​ 
 + 
 +  * copie de la clé publique avec usb : 
 +   
 +On peut par exemple copier sur une clé usb le fichier ''​~/​.ssh/​id_dsa.pub''​ contenant la clé publique du client, puis copier le contenu de ce fichier dans le fichier ''​~/​.ssh/​authorized_keys''​ sur le serveur. Pour ce faire : 
 + 
 +**- sur l'​ordinateur client :** 
 +<code root> 
 +mount /mnt/usb /dev/sdxx 
 +</​code>​ 
 + 
 +<code user> 
 +cp ~/​.ssh/​id_dsa.pub /mnt/usb/ 
 +</​code>​ 
 + 
 +<code root> 
 +umount /mnt/usb 
 +</​code>​ 
 + 
 +**-sur le serveur :** 
 + 
 +<code root> 
 +mount /mnt/usb /dev/sdxx 
 +</​code>​ 
 + 
 +puis : 
 + 
 +<code user> 
 +mkdir ~/.ssh 
 +</​code>​ 
 + 
 +-puis copie de ssh/​id_dsa.pub et création du fichier ~/​.ssh/​authorized_keys 
 + 
 +<code user> 
 +mv /​mnt/​usb/​ssh/​id_dsa.pub ~/​.ssh/​authorized_keys  
 +</​code>​ 
 + 
 +<code root> 
 +umount /mnt/usb 
 +</​code>​ 
 + 
 +Pour vérification : 
 + 
 +<code user> 
 +ls -la ~/.ssh/ 
 +</​code>​ 
 + 
 +<file config retour de la commande>​ 
 +drwxr-xr-x ​ 2 user user 4096 mai   15 11:05 . 
 +drwxr-xr-x 29 user user 4096 mai   15 11:09 .. 
 +-rw-r--r-- ​ 1 user user  402 mai   15 10:58 authorized_keys 
 +</​file>​ 
 + 
 +  * Pour donner uniquement les droits de lecture au fichier ~/​.ssh/​authorized_keys : 
 + 
 +<code user> 
 +chmod 400 ~/​.ssh/​authorized_keys 
 +</​code>​ 
 + 
 +<file config retour de la commande>​ 
 +drwxr-xr-x ​ 2 user user 4096 mai   15 11:05 . 
 +drwxr-xr-x 29 user user 4096 mai   15 11:09 .. 
 +-r-------- ​ 1 user user  402 mai   15 10:58 authorized_keys 
 +</​file>​ 
 + 
 + 
 +  * la connexion se fait comme précédemment : 
 + 
 +<code user> 
 +ssh <-p port-choisi>​ user@192.168.XXXX 
 +</​code>​ 
 + 
 +A présent, lors de votre connexion, seule votre éventuelle //​passphrase//​ indiquée lors de la génération de la clé vous sera demandée, mais plus votre mot de passe. 
 + 
 +<​note>​Pour éviter de taper toute cette commande, il faut renseigner le fichier //​~/​.ssh/​config//​ comme indiqué [[doc:​reseau:​ssh:​client#​configuration|plus bas]]</​note>​ 
 + 
 + 
 +== ssh-agent == 
 + 
 +Afin d'​éviter de retaper votre //​passphrase//​ à chaque connexion, vous pouvez utiliser //​ssh-agent//​. Il doit être invoqué au début de votre session de la façon suivante avec un //shell bourne// (comme //bash//) 
 + 
 +<code user>​eval `ssh-agent -s`</​code>​ 
 + 
 +et comme cela avec un //shell C// 
 + 
 +<code user>​eval `ssh-agent -c`</​code>​ 
 + 
 +Il suffit ensuite d'​indiquer la clé à utiliser grâce à la commande //​ssh-add//​ 
 + 
 +<code user>​ssh-add $cle_privee</​code>​ 
 + 
 +<​note>​Sans l'​argument //​$clee_privee//,​ //ssh-add// ajoute les clés suivantes //​~/​.ssh/​id_rsa,​ ~/​.ssh/​id_dsa,​ ~/​.ssh/​id_ecdsa and ~/​.ssh/​identity//​ </​note>​ 
 + 
 +Pour lister les clés ajoutées 
 + 
 +<code user>​ssh-add -l</​code>​ 
 + 
 +Pour supprimer toutes les clés enregistrée 
 + 
 +<code user>​ssh-add -D</​code>​ 
 + 
 +<note important>​Ce système ne fonctionne que pour une seule session. Ainsi, si vous fermer votre session (ou votre émulateur de terminal), votre //​passphrase//​ vous sera à nouveau demandé. Pour garder une trace de cet enregistrement,​ il faut utiliser //​keychain//</​note>​ 
 + 
 +== keychain == 
 + 
 +__Installation__ 
 + 
 +<code root>​apt-get install keychain</​code>​ 
 + 
 +__configuration__ 
 + 
 +Il faut appeler le script. Dans votre fichier //​~/​.bashrc//​ ou //​~/​.bash_profile//​ ajoutez (en remplaçant $cle_privee par le nom de votre clé) 
 + 
 +<code bash>###########################################################################​ 
 +# allow $USER to use keys. Only enter once and it will remain enabled till 
 +# you delete it or reboot the server  
 +###########################################################################​ 
 +/​usr/​bin/​keychain $HOME/​.ssh/​$cle_privee 
 +source $HOME/​.keychain/​$HOSTNAME-sh 
 +</​code>​ 
 + 
 +<note tip>Si votre but est uniquement de permettre à des scripts (lancés par //cron// par exemple) de se connecter en //ssh// en interdisant une connexion manuelle sans //​passphrase//,​ il faut utiliser le code suivant 
 +<code bash>#####################################################################################​ 
 +### The --clear option make sure Intruder cannot use your existing SSH-Agents keys  
 +### i.e. Only allow cron jobs to use password less login  
 +#####################################################################################​ 
 +/​usr/​bin/​keychain --clear $HOME/​.ssh/​id_rsa 
 +source $HOME/​.keychain/​$HOSTNAME-sh</​code>​ 
 + 
 +Source : http://​www.cyberciti.biz/​faq/​ubuntu-debian-linux-server-install-keychain-apt-get-command 
 +</​note>​ 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +=== Navigation via SSH === 
 + 
 +Pour voir les fichiers avec konqueror et Nautilus rien de plus simple 
 + 
 +== Konqueror == 
 + 
 +<code user>​fish://​user@192.168.x.x</​code>​ 
 +         
 +== Nautilus == 
 + 
 +<code user>​ssh://​user@192.168.x.x:​22</​code>​ 
 + 
 +=== Tunnel chiffré en SSH ===
  
-=== Rediriger ​un port distant ​vers un port local ===+Il se peut que vous vouliez établir une connexion distante pour transiter des données de manière 100% transparente et sécurisée,​ nous allons donc établir ​un tunnel ssh. 
 +<code root>ssh -L 5901:​localhost:​5900 user@80.80.80.80</​code>​ 
 +Cette technique est très utile pour relier en local un bon nombre d'​utilisation,​ comme sur kde distantun serveur smtp personnel, une boite mail ( pop ou imap ) personnelle,​ un bon nombre d'​utilisations ont recours à cette technique.
  
-FIXME+**Détail sur la ligne de commande SSH :** 
 +  *ssh : invoque le protocole 
 +  *-L invoque de la création d'un tunnel crypté 
 +  *5901 : port coté local 
 +  *localhost : indique que l'​accès se fera en local de manière transparente 
 +  *5900 : port du service distant 
 +  *user@80.80.80.80 : indique avec quelle user et sur quelle ip on va établir la connection.
  
 ==== Configuration ==== ==== Configuration ====
Ligne 95: Ligne 300:
  
 <​note>​Dans le même fichier de configuration,​ vous pouvez ajouter plusieurs //alias// comme celui-ci.</​note>​ <​note>​Dans le même fichier de configuration,​ vous pouvez ajouter plusieurs //alias// comme celui-ci.</​note>​
 +
 + Host ServeurA
 + IdentityFile ~/.ssh/cleA
 + Host ServeurB
 + IdentityFile ~/.ssh/cleB
 +
 +
 Pour une liste de toutes les options disponibles,​ et il y en a... //une floppée// ! Tapez : Pour une liste de toutes les options disponibles,​ et il y en a... //une floppée// ! Tapez :
 <code user>man ssh_config</​code>​ <code user>man ssh_config</​code>​
Ligne 122: Ligne 334:
    ​Offending key in ~/​.ssh/​known_hosts:​9    ​Offending key in ~/​.ssh/​known_hosts:​9
  
-Dans cet exempole, il faut alors supprimer la 9ème ligne de son fichier ''/​home/​user/​.ssh/​known_hosts''​+Dans cet exemple, il faut alors supprimer la 9ème ligne de son fichier ''/​home/​user/​.ssh/​known_hosts''​
  
-Donc nous éditons(([[:​doc:​editeurs:​vim:​vim]] ou [[:​doc:​editeurs:​nano]])) ce fichier en user(([[:​doc:​systeme:​su]])) :+Donc nous éditons(([[:​doc:​editeurs:​vim:​vim]] ou [[:​doc:​editeurs:​nano]])) ce fichier en user((voir cette documentation interne :[[:​doc:​systeme:​su]])) :
 <code user>​nano ~/​.ssh/​known_hosts</​code>​ <code user>​nano ~/​.ssh/​known_hosts</​code>​
  
Ligne 131: Ligne 343:
 À notre prochain contact vers le serveur, après le //yes// d'​acceptation habituelle, une nouvelle clé d'​identification sera créée et tout ira pour le meilleur des mondes **ssh** possible. À notre prochain contact vers le serveur, après le //yes// d'​acceptation habituelle, une nouvelle clé d'​identification sera créée et tout ira pour le meilleur des mondes **ssh** possible.
  
-==== TP ====+===Après réinstallation du client ​=== 
 +  * __Lors de la création de clés asymétriques côté client__ 
 +Rappel : il s'​était créé une paire de clés, rangée par exemple dans le dossier proposé ~/.ssh/ :\\  
 +- "​~/​.ssh/​id_rsa"​\\  
 +- "​~/​.ssh/​id_rsa.pub"​ (celle qu'on a envoyé au serveur, par exemple avec la commande ''​ssh-copy-id''​ ou en ''​scp''​.\\ ​
  
-  * Pour ''​COPIER'' ​un fichier sécurisé vous devez vous servir ​de : [[:​doc:​reseau:​scp|SCP]] +Donc si on veut, pour une raison ou un autre((par exemple on a réinstallé le système anciennement client et on n'​arrive plus à se connecter à son serveur)) changer cette pair de clé, il faut 
-  * Pour ''​MONTER'' ​les fichiers servez-vous de [[:doc:reseau:​sshfs|SSHFS]] +  * **Côté serveur** : Éditer le fichier /​etc/​ssh/​sshd_config pour vérifier ou remettre ​ l'authentification par mot de passe est à ''yes''​ : ''​PasswordAuthentication yes''​((le temps de la procédure, après laquelle, il veut mieux remettre la valeur "​no"​));​\\  
-  * Utiliser ​ssh comme un serveur de fichiers : [[:​doc:​reseau:​sftp | sftp installation et configuration]]+  - recharger ssh ''​service ssh start''​ ; 
 +  ​- supprimer le fichier "**~/.ssh/​authorized_keys**"​
  
-===== Serveur SSH =====+  * **Côté client** : supprimer les fichiers "​~/​.ssh/​id_rsa"​ et "​~/​.ssh/​id_rsa"​ puisqu'​on va les régénérer en se créant une nouvelle paire de clés.
  
-==== Installation ====+=> On peut ensuite recommencer la procédure : se connecter une première fois au serveur (si ça coince ne pas hésiter à supprimer sur le client ~/​.ssh/​known_hosts si on ne l'a pas fait) ; puis côté client créer une paire de clé et l'​envoyer au serveur).
  
-<​code ​root>apt-get install openssh-server</​code>​+  * Si tout va bien pour se connecter, mais qu'on veut simplement changer la passphrase de sa clé privée (crée avec ''​ssh-keygen -t dsa''​),​ la commande est (côté client) : 
 +<​code ​user>ssh-keygen ​-p</​code>​
  
-==== Configuration ==== 
- 
-La configuration par défaut est très bonne. \\ 
-Si vous voulez la personnaliser,​ il vous faut éditer le fichier ''/​etc/​ssh/​sshd_config''​ : 
-<code user>​nano /​etc/​ssh/​sshd_config</​code>​ 
- 
-Comme d'​hab',​ plus d'​infos dans le : 
-<code user>man sshd_config</​code>​ 
- 
-==== Recommandation importante ==== 
- 
-Jojo vous recommande de ne pas ouvrir cette connection SSH tel quelle sur le net... il y a des malins qui forcent le passage pour entrer chez vous en essayant des tetra…floppées de mot de passes courants ;-). 
- 
-Donc si vous voulez **exporter** une session SSH via un PC a 18 000 km :-D de chez vous, restez prudents et sécurisez-là au maximum(([[doc:​systeme:​securite | De la sécurité...]])),​ en utilisant par exemple une clé RSA (voir par la suite dans les TP) 
  
 ==== TP ==== ==== TP ====
  
-  * [[doc:​reseau:​ssh|Utilisation ​de clés RSA]] +  * Pour ''​COPIER''​ un fichier sécurisé vous devez vous servir de : [[:doc:reseau:scp|SCP]] 
- +  * Pour ''​MONTER''​ les fichiers servez-vous ​de : [[:​doc:​reseau:​ssh:​sshfs|SSHFS]] 
-TODO+  * Utiliser ssh comme un serveur de fichiers : [[:​doc:​reseau:​sftp | sftp installation et configuration]]
  
-  * Rediriger le port 22 de la freebox/​livebox/​whateverbox vers votre machine pour vous connecter chez vous depuis l'​extérieur 
-  * Configuration de SSH comme serveur de fichier. 
  
doc/reseau/ssh/client.txt · Dernière modification: 18/08/2023 21:27 par Jean-Pierre Pinson

Pied de page des forums

Propulsé par FluxBB