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
doc:reseau:ssh:client [12/10/2014 09:27]
Hypathie [Installation]
doc:reseau:ssh:client [18/08/2023 21:27] (Version actuelle)
Jean-Pierre Pinson [Installation sur le poste client]
Ligne 5: Ligne 5:
   * 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>à-compléter ​à-tester}} +  * Suivi : {{tag>​à-tester}} 
-    * Création par [[user>​MaTTuX_]] 17/06/2007+    * 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 | ici]]((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 26: Ligne 23:
 mais cette fois, depuis votre PC à une machine distante. mais cette fois, depuis votre PC à une machine distante.
  
-===== Installation =====+===== Installation ​sur le poste client ​=====
  
 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 35: Ligne 32:
 Pour pouvoir accéder à une machine via la couche IP (qu'​utilise SSH), il nous faut : Pour pouvoir accéder à une machine via la couche IP (qu'​utilise SSH), il nous faut :
   * soit l'​adresse [[:​doc:​reseau:​ip-publique|IP]] de la machine,   * soit l'​adresse [[:​doc:​reseau:​ip-publique|IP]] de la machine,
-  * soit son nom d'​hôte. +  * soit son nom d'​hôte ​(hostname). 
-Par exemple, pour se connecter au serveur ​Debian, vous pouvez lui envoyer des [[:​doc:​reseau:​ping]] ​via son IP ainsi : +Tips pour connaitre l'​adresse IP d'une machine : <code user>​hostname -I</​code>​ Puis pour son nom d'​hôte (hostname) : <code user>​hostname</​code>​ 
-<code user>​ping -c 5 128.31.0.51</​code>​+Par exemple, pour se connecter au serveur ​ssh **debian**, vous pouvez lui envoyer des [[:​doc:​reseau:​ping]] ​en l'​adressant par son IP ainsi : 
 +<code user>​ping -c 5 128.31.0.51</​code> ​**Des ping depuis un autre ordi du réseau local ? 128.31.0.51 est une adresse machine, non ? Peut être faut il préciser qu'il faut l'​adresse publique ??**
 ou via son nom d'​hôte : ou via son nom d'​hôte :
 <code user>​ping -c 5 debian.org</​code>​ <code user>​ping -c 5 debian.org</​code>​
  
 === Obtenir un shell distant === === Obtenir un shell distant ===
- +Par exemple, pour vous connecter sous le nom d'​utilisateur((user)) //jojo// sur la machine ​dont le nom (hostname) est //​coincoin//​((PAN !)), vous faites simplement :
-Par exemple, pour vous connecter sous le nom d'​utilisateur((user)) //jojo// sur la machine ​d'​IP ​//​coincoin//​((PAN !)), vous faites simplement :+
 <code user>ssh jojo@coincoin</​code>​ <code user>ssh jojo@coincoin</​code>​
- +**Forcer le client SSH à utiliser IPv4 ou IPv6**  
-Si le serveur ssh distant ​n'​écoute pas sur le port 22, vous pouvez spécifier le port à l'aide de l'​option ''​-p''​ :+<code user> ssh -6 jojo@coincoin</​code>​ 
 +où alors 
 +<code user> ssh -4 jojo@coincoin</​code>​ 
 +**encore une fois comment est ce possible sans adresse publique ??** 
 +Si la machine sur laquelle ​le serveur ​serveur ssh tourne ​n'​écoute pas sur le port 22, vous pouvez spécifier le numéro de port à l'aide de l'​option ''​-p''​ :
 <code user>ssh -p 1234 jojo@coincoin</​code>​ <code user>ssh -p 1234 jojo@coincoin</​code>​
  
Ligne 54: Ligne 55:
  
  
-Pour vous connecter sous le nom d'​utilisateur //jojo// sur la machine ​d'​IP ​//​coincoin//​ et obtenir l'​export X,+Pour vous connecter sous le nom d'​utilisateur //jojo// sur la machine ​dont le nom (hostname) est //​coincoin//​ et obtenir l'​export X,
   - vous faites simplement :<code user>ssh -X jojo@coincoin</​code>​   - vous faites simplement :<code user>ssh -X jojo@coincoin</​code>​
   - Puis vous lancez votre application graphique via le shell obtenu.   - Puis vous lancez votre application graphique via le shell obtenu.
Ligne 62: Ligne 63:
 === 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>​
Ligne 73: Ligne 74:
 === Par clés asymétriques === === 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.+Les mots de passe sont souvent peu complexes. On peut alors utiliser une paire de clés 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.+Le principe est le suivant, on génère une paire de clés. La clé privée ​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. 
 +**c'​est qui "on " : le client ou le serveur ??**
  
-== Création de la clé ==+La contine du captnfab :  \\    
 +La //clé publique// c'est un peu la serrure. \\ 
 +La //clé privée// est la clé. \\ 
 +Tu peux distribuer ta serrure à tout le monde et quand tu viens, tu viens avec ta clé et ça ouvre les portes. 
 + 
 +== Création de la paire de clés == 
 + 
 +<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. Les clés doivent être générées dans un contexte où la source d’aléa est fiable, ou à défaut dans un environnement où suffisamment d’entropie a été accumulée. Pour des raisons évidentes, les systèmes nouvellement démarrés ne peuvent avoir accumulé suffisamment d’entropie. Il est donc recommandé d’obtenir de l’aléa une fois qu’une période d’activité suffisante s’est écoulée. 
 + 
 +A partir de la version 7 de openssh (présente dès Debian 9), le support des clés dsa est désactivé par défaut((Si besoin, pour permettre à nouveau la connexion par clé DSA, la solution est par là : https://​debian-facile.org/​viewtopic.php?​pid=233935#​p233935)).</​note>​ 
 + 
 + 
 +<note important>​Les commandes suivantes sont à lancer en utilisant le compte utilisateur dont vous souhaitez pouvoir ouvrir une session distante.</​note>​ 
 + 
 +Pour une clef ecdsa en 256: 
 +<code user> ssh-keygen -t ecdsa -b 256</​code>​ **Peut on lancer cette commande seule pour se connecter ?**  
 + 
 +Pour une clef rsa en 2048: 
 +<code user>​ssh-keygen -t rsa -b 2048</​code>​ 
 + 
 +Pour une clef dsa en 2048: 
 +<code user>​ssh-keygen -t dsa -b 2048</​code>​
  
-<code user>​ssh-keygen -t dsa</​code>​ 
 <​code>​Generating public/​private dsa key pair. <​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 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)+Enter passphrase (empty for no passphrase):​ (mettre une passphrase qui sera demandée à chaque connexion - ou rien si ce n'est pas nécessaire pour vous)
 </​code>​ </​code>​
-Vous validez 2 fois et vous obtiendrez le résultat ​en détail de la création de votre clé dsa.+Vous validez 2 fois et vous obtiendrez le résultat ​un rapport détaillé concernant ​la création de votre paire de clés dsa.
  
-== Exportation de la cle ==+== Exportation de la clé ==
  
   * exportation de la clé avec la commande ssh-copy-id :   * 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.+Votre clé sera générée en 1024 bits dans votre dossier /​home/​votre_user/​.ssh/ ​ 
 + 
 +Il a été créé deux fichiers : 
 + 
 +<code user> 
 +-rw------- ​ 1 user user 1823 mai   23 19:19 nom_fichier 
 +-rw-r--r-- ​ 1 user user  393 mai   23 19:19 nom_fichier.pub 
 +</​code>​ 
 + 
 +Il faut envoyer sur le serveur le fichier "​nom_fichier.pub"​.  
 + 
 + 
 +Pour la mettre en place il vous suffit de la copier ​sur votre pc distant.** serveur ou client ?** 
 + 
 +<code user>​ssh-copy-id user@192.168.x.x</​code>​ 
 + 
 + 
 + 
 +<note tip> 
 +Par défaut, le client ssh s'​attend à un nom de clé id_rsa.pub ou id_dsa.pub ...\\ 
 +L'​option -i permet de forcer avec un autre nom que celui par défaut.\\ 
 + 
 +<code user>​ssh-copy-id -i /​home/​user/​.ssh/​nom_fichier.pub user@192.168.x.x</​code>​ 
 +</​note>​ 
  
-<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  **on est côté serveur j'​imagine ?**
-  ​* On vous demande alors votre mot de passe une dernière fois+
  
 <note tip> <note tip>
Ligne 99: Ligne 144:
  
 <code user> <code user>
-ssh-copy-id -i /home/user/​.ssh/​id_dsa.pub+ssh-copy-id -i ~/​.ssh/​id_dsa.pub -p 1234 ${USER}@192.168.x.x
- "​-p 1234 user@192.168.x.x"+
 </​code> ​ </​code> ​
-Ne pas oublier les guillemets, sans lesquels la commande ne fonctionnerait pas !+Adaptez l'​adresse IP selon celle de votre serveur.
 </​note>​ </​note>​
 À présent, c'est la passphrase qui sera demandée. À présent, c'est la passphrase qui sera demandée.
  
 <​note>​ <​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**.\\ ​+À savoir **la commande ssh-copy-id** qui vient d'​être utilisée pour copier ​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,​\\  +Pour copier le contenu du fichier ~/​.ssh/​id_dsa.pub (créée ​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).\\ +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 le propriétaire du répertoire).\\ 
    
   * Puis soit créer le fichier **~/​.ssh/​authorized_keys** (''​cp /​chemin/​de/​la/​clé ~/​.ssh/​authorized_keys''​) ​   * 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''​ +  * 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)+  * enfin donner ou vérifier que "​authorized_keys"​ ait les droits 400 (lecture seule pour le propriétaire du fichier)
 </​note>​ </​note>​
  
-  * copie de la clé publique ​avec usb :+  * copie de la clé publique ​en utilisant une clef 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 :+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 :** **- sur l'​ordinateur client :**
 <code root> <code root>
-mount /​mnt/​usb ​/dev/sdxx+mount /​dev/​sdxx ​/mnt/usb
 </​code>​ </​code>​
  
Ligne 137: Ligne 181:
  
 <code root> <code root>
-mount /​mnt/​usb ​/dev/sdxx+mount /​dev/​sdxx ​/mnt/usb
 </​code>​ </​code>​
  
Ligne 161: Ligne 205:
 ls -la ~/.ssh/ ls -la ~/.ssh/
 </​code>​ </​code>​
-retour : + 
-<code>+<file config retour de la commande>
 drwxr-xr-x ​ 2 user user 4096 mai   15 11:05 . drwxr-xr-x ​ 2 user user 4096 mai   15 11:05 .
 drwxr-xr-x 29 user user 4096 mai   15 11:09 .. drwxr-xr-x 29 user user 4096 mai   15 11:09 ..
 -rw-r--r-- ​ 1 user user  402 mai   15 10:58 authorized_keys -rw-r--r-- ​ 1 user user  402 mai   15 10:58 authorized_keys
-</code>+</file>
  
-  * Pour donner uniquement les droits de lecture au fichier ~/​.ssh/​authorized_keys :+  * Pour donner ​au propriétaire du fichier ​uniquement les droits de lecture au fichier ~/​.ssh/​authorized_keys :
  
 <code user> <code user>
 chmod 400 ~/​.ssh/​authorized_keys chmod 400 ~/​.ssh/​authorized_keys
 </​code>​ </​code>​
-Retour : 
  
-<code>+<file config retour de la commande>
 drwxr-xr-x ​ 2 user user 4096 mai   15 11:05 . drwxr-xr-x ​ 2 user user 4096 mai   15 11:05 .
 drwxr-xr-x 29 user user 4096 mai   15 11:09 .. drwxr-xr-x 29 user user 4096 mai   15 11:09 ..
 -r-------- ​ 1 user user  402 mai   15 10:58 authorized_keys -r-------- ​ 1 user user  402 mai   15 10:58 authorized_keys
-</code>+</file>
  
  
Ligne 185: Ligne 228:
  
 <code user> <code user>
-ssh <-p port-choisi> user@192.168.XXXX+ssh -p <Numéro de port choisi> user@192.168.XXXX
 </​code>​ </​code>​
  
Ligne 213: Ligne 256:
 <code user>​ssh-add -l</​code>​ <code user>​ssh-add -l</​code>​
  
-Pour supprimer toutes les clés enregistrée+Pour supprimer toutes les clés enregistrées
  
 <code user>​ssh-add -D</​code>​ <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>​+<note important>​Ce système ne fonctionne que pour une seule session. Ainsi, si vous fermez ​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 == == keychain ==
Ligne 278: Ligne 321:
   *localhost : indique que l'​accès se fera en local de manière transparente   *localhost : indique que l'​accès se fera en local de manière transparente
   *5900 : port du service distant   *5900 : port du service distant
-  *user@80.80.80.80 : indique avec quelle ​user et sur quelle ip on va établir la connection.+  *user@80.80.80.80 : indique avec quel user et sur quelle ip on va établir la connection.
  
 ==== Configuration ==== ==== Configuration ====
Ligne 358: Ligne 401:
   * 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) :   * 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>​ <code user>​ssh-keygen -p</​code>​
 +
 +
 +==== Démarrer ssh-agent automatiquement (Debian minimale) ====
 +Pour démarrer ''​ssh-agent''​ au démarrage de votre session si vous utilisez un système minimal:
 +
 +<code user>​mkdir -p ~/​.config/​systemd/​user</​code>​
 +<code user>cat << EOF > ~/​.config/​systemd/​user/​ssh-agent.service
 +[Unit]
 +Description=SSH key agent
 +
 +[Service]
 +Type=forking
 +Environment=SSH_AUTH_SOCK=%t/​ssh-agent.socket
 +ExecStart=/​usr/​bin/​ssh-agent -a $SSH_AUTH_SOCK
 +
 +[Install]
 +WantedBy=default.target
 +EOF
 +</​code>​
 +
 +Ensuite, dans votre ''​.bash_profile''​ (ou autre ''​profile''​ selon votre interpréteur):​
 +
 +<code user>
 +echo export SSH_AUTH_SOCK="​$XDG_RUNTIME_DIR/​ssh-agent.socket"​ >> .bash_profile
 +source .bash_profile
 +</​code>​
 +
 +
 +Il vous reste ensuite à démarrer le service:
 +
 +<code user>
 +systemctl --user enable ssh-agent.service # pour le démarrer automatiquement
 +systemctl --user start ssh-agent.service # pour démarrer le service immédiatement
 +</​code>​
 +
  
  
doc/reseau/ssh/client.1413098848.txt.gz · Dernière modification: 12/10/2014 09:27 par Hypathie

Pied de page des forums

Propulsé par FluxBB