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 [30/07/2016 09:26]
cemoi [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_]] le 17/06/2007     * Création par [[user>​MaTTuX_]] le 17/06/2007
     * Testé par <...> le <...>     * Testé par <...> le <...>
Ligne 23: 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 :
Ligne 32: 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 51: 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 59: 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 70: 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é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 ??** 
 + 
 +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 ==
  
-Le principe est le suivant, on génère une paire de cléLa clé privé reste sur votre poste clientLa clé publique doit être transférée sur le serveur manuellement ou par le réseauC'​est ​cette clé qui servira alors à l'​authentification.+<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.
  
-== Création ​de la clé ==+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 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és 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.</​note>​ 
  
-<note important>​Les commandes suivantes sont lancer en tant qu'utilisateur dont vous souhaitez ouvrir ​la session distante.</​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: Pour une clef ecdsa en 256:
-<code user>​ssh-keygen -t ecdsa -b 256</​code>​+<code user> ssh-keygen -t ecdsa -b 256</​code> ​**Peut on lancer cette commande seule pour se connecter ?** 
  
 Pour une clef rsa en 2048: Pour une clef rsa en 2048:
Ligne 91: Ligne 104:
 <​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/ ​
  
-<code user>​ssh-copy-id -i /​home/​user/​.ssh/​id_dsa.pub user@192.168.x.x</​code>​ +Il a été créé deux fichiers : 
-  * On vous demande alors votre mot de passe une dernière fois+ 
 +<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>​ 
 + 
 + 
 +  * On vous demande alors votre mot de passe une dernière fois  **on est côté serveur j'​imagine ?**
  
 <note tip> <note tip>
Ligne 108: 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 146: Ligne 181:
  
 <code root> <code root>
-mount /​mnt/​usb ​/dev/sdxx+mount /​dev/​sdxx ​/mnt/usb
 </​code>​ </​code>​
  
Ligne 177: Ligne 212:
 </​file>​ </​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>
Ligne 193: 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 221: 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 286: 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 366: 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.1469863580.txt.gz · Dernière modification: 30/07/2016 09:26 par cemoi

Pied de page des forums

Propulsé par FluxBB