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 [30/12/2012 10:49]
smolski [Lien à suivre]
doc:reseau:ssh:client [15/05/2014 09:27]
Hypathie [Installation] ajout des commandes pour transfère par usb
Ligne 1: Ligne 1:
-====== ​La commande ​SSH ======+====== SSH coté client======
  
-  * Objet : serveur ​ssh +  * Objet : Utilisation de ssh comme client 
-  * Niveau requis : DÉBUTANT AVISÉ +  * Niveau requis : {{tag>​avisé}} 
-  * Commentaires : //Partager __en toute sécurité__ ​des connections entre pcdistants ou locals.// +  * Commentaires : //Administrer son serveur à distance, établir un tunnel sécurisé pour relayer ​des portsetc... // 
-  * Débutant, à savoir : [[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) - ainsi que : [[commande:su La commande SU]].+  * 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}} 
 +    * Création par <​vous>​ <​date>​ 
 +    * 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 !)) 
 + 
 +**Nota :​** 
 + 
 +Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! 
 + 
 +===== Introduction ===== 
 + 
 +Lorsque vous démarrez un ordinateur, à moins que vous n'ayez configuré de connexion automatique,​ il vous est demandé un nom d'​utilisateur et un mot de passe. \\ 
 +C'est le processus de //login// qui vous permet de vous authentifier en tant qu'​utilisateur de la machine. \\ 
 +//À l'​issue de cette authentification,​ vous avez accès à une interface vous permettant de lancer des commandes, souvent une interface graphique comme [[:​doc:​programmation:​shell:​shell|shell]].//​ 
 + 
 +Le principe ici va être le même : \\ 
 +via un canal sécurisé((mais ça, c'est ssh qui s'en charge via openssl)) vous allez fournir 
 +  - un nom d'​utilisateur et 
 +  - un mot de passe 
 +mais cette fois, depuis votre PC à une machine distante.
  
 ===== Installation ===== ===== Installation =====
  
-<​code ​bash> +Comme d'​habitude,​ ça tient en une ligne : 
-aptitude ​install ​ssh</​code>​+<​code ​root>apt-get ​install ​openssh-client</​code>​
  
-//Easy, is'​n'​t ?// ;-)+==== Utilisation ====
  
-===== Introduction =====+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 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 : 
 +<code user>​ping 128.31.0.51</​code>​ 
 +ou via son nom d'​hôte : 
 +<code user>​ping debian.org</​code>​
  
 +=== Obtenir un shell distant ===
  
-Le SSH est un protocole qui permet ​d'établir une connection avec un autre PC, ce qui permet ''​en console'' ​d'avoir accès au contenu du PC distant. \\  +Par exemple, pour vous connecter sous le nom d'utilisateur((user)) //jojo// sur la machine ​d'IP //​coincoin//​((PAN !)), vous faites simplement : 
-Pour faire des connections vers un PC à plusieurs KM vous devrez ouvrir le port 22 de votre routeur.+<code user>ssh jojo@coincoin</​code>​
  
-===== Configuration ​de Base =====+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 -p 1234 jojo@coincoin</​code>​
  
-Le SSH est configuré avec un niveau de sécurité très faible, pour ce connecter en local à un PC distant ​il suffit de faire comme ceci.+=== Obtenir ​un shell distant ​avec export X ===
  
-  ssh user@192.168.1.x +Il est aussi possible de lancer sur le serveur distant une application graphique qui s'​affichera sur votre ordinateur client.
-  mot_de_passe+
  
-Remplacer user par votre login sur le second PC et le x par la véritable ip de votre machine hôte, vous devrez répondre à la question par yes et saisir votre mot de passe de session. 
  
-Pour te connecter sur un serveur ssh qui n'a pas le port 22 par défaut. +Pour vous connecter ​sous le nom d'​utilisateur //​jojo// ​sur la machine d'IP //​coincoin//​ et obtenir l'​export X, 
-   ​ssh mattux@mon.serveur.org ​-p 10010 +  - vous faites simplement :<code user>ssh -X jojo@coincoin</​code>​ 
--p **10010** bien sûr à adapter au port ouvert, son numéro !+  Puis vous lancez votre application graphique via le shell obtenu.
  
-==== Recommandation importante : ====+==== Authentification ​====
  
-Je vous recommande ​de ne pas exporter cette connection SSH tel quelle sur le net... il y a des malins qui force le passage pour entrer chez vous ;-).+=== Par nom d'​utilisateur/​mot ​de passe ===
  
-Donc si vous voulez exporter une session SSH via un PC a 18 000 km :-D de chez vous je vous recommande ​de faire une configuration avancée.+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
  
-===== Réinstallation =====+<code user>ssh jojo@coincoin</​code>​
  
-Si le pc serveur est réinstallé, l'identification ​de la clé concernant ​les clients ne marchera plus :+Ce à quoi le serveur ​vous répond :  
 + 
 +    jojo@coincoin'​s password: 
 + 
 + 
 +=== 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 suivanton 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 cle == 
 + 
 +<code user>​ssh-keygen -t dsa</​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 cle 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 
 +(Lors de la prochaine connexion au serveur, c'est la passphrase qui sera demandée.) 
 +   
 +<note tip> 
 +Si vous avez changé côté serveur, le port 22, par exemple par le port 10010, il faut alors utiliser la commande : 
 + 
 +<code user> 
 +ssh-copy-id -i /​home/​user/​.ssh/​id_dsa.pub "-p 10010 user@192.168.x.x"​ 
 +</​code>​  
 +Puis rentrez vous mot de passe client, une dernière fois. 
 +</​note>​ 
 + 
 +<​note>​ 
 +A 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 côté serveur il faudra créer le fichier ~/ssh et lui donner ​les droits 700 (lecture + écriture +exécution pour l'​utilisateur);​\\  
 +Puis créer le fichier ~/​.ssh/​authorized_keys et lui donner les droits 600 (lecture + écriture pour l'​utilisateur) 
 +</​note>​ 
 + 
 +  * copie de la clé publique avec usb : 
 +   
 +Notez qu'on peut également copier sur la clé usb le fichier contenant la clé publique du client ''​~/​.ssh/​id_rsa.pub'',​ puis copier-coller le contenu de ce fichier dans le fichier ''​~/​.ssh/​authorized_keys''​ qui se trouve sur le serveur. 
 + 
 +-sur le serveur : 
 + 
 +<code user> 
 +mkdir ~/.ssh 
 +</​code>​ 
 + 
 +Puis :
  
 <​code>​ <​code>​
-ssh user@192.168.X.XX +chmod 700 ~/.ssh 
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+</​code>​ 
 + 
 +-copie de ssh/​id_rsa.pub et création du fichier ~/​.ssh/​authorized_keys 
 + 
 +<code user> 
 +mv /​fichier-de-montage-de-l'​usb/​ssh/​id_rsa.pub ~/​.ssh/​authorized_keys  
 +</​code>​ 
 +PUIS : 
 + 
 +<code user> 
 +chmod 600 ~/​.ssh/​authorized_keys 
 +</​code>​ 
 + 
 +A présent, lors de votre connexion, seule votre éventuelle //​passphrase//​ indiqué lors de la génération de la clé vous sera demandé, 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 === 
 + 
 +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 distant, un serveur smtp personnel, une boite mail ( pop ou imap ) personnelle,​ un bon nombre d'​utilisations ont recours à cette technique. 
 + 
 +**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 ==== 
 + 
 +Par défaut, SSH n'a pas besoin de configuration. Cependant, pour se simplifier la vie ou pour les cas particuliers,​ il est possible de préciser préalablement quelques informations sur les connexions que l'on effectue régulièrement. 
 + 
 +Cela se fait au moyen de l'​édition du fichier de configuration ''​~/​.ssh/​config''​((à créer s'il n'​existe pas déjà)) : 
 +<code user>​nano ~/​.ssh/​config</​code>​ 
 + 
 +Si vous vous connectez régulièrement sur l'​ordinateur de votre maman, d'IP ''​ordi.de.ma.maman ''​ sous le nom d'​utilisateur ''​gaston '',​ et sachant que son serveur ssh est configuré pour écouter sur le ''​port 444 '',​ ajoutez ceci dans votre fichier de configuration : 
 + 
 +  Host maman 
 +  Hostname ordi.de.ma.maman 
 +  User gaston 
 +  Port 444 
 +   
 +Et, pour vous connecter sur l'ordi de votre môman, il vous suffira maintenant de taper simplement la ligne suivante : 
 +<code user>ssh maman</​code>​ 
 + 
 +<​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 : 
 +<code user>man ssh_config</​code>​ 
 + 
 +==== Problèmes courants ==== 
 + 
 +=== Après réinstallation du serveur === 
 + 
 +Si le pc serveur est réinstallé,​ la clé unique l'​identifiant est changée. \\ 
 +Le client va détecter le changement et soupçonner que quelqu'​un d'​autre essaye de se faire passer pour le serveur original et vous obtiendrez alors un message comme celui-ci : 
 + 
 +<​code>​@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ​    @ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ​    @
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Ligne 58: Ligne 280:
 Host key verification failed.</​code>​ Host key verification failed.</​code>​
  
-Ce message indique ​au pc client ​ici : +Ce message indique ​la ligne contenant l'​empreinte de l'​ancien serveur ​ici : 
-   ​Offending key in /home/user/​.ssh/​known_hosts:​9+   ​Offending key in ~/​.ssh/​known_hosts:​9
  
-Qu'il faut supprimer la 9ème ligne de son fichier ​+Dans cet exempole, ​il faut alors supprimer la 9ème ligne de son fichier ​''​/​home/​user/​.ssh/​known_hosts''​
-   /​home/​user/​.ssh/​known_hosts+
  
-Donc nous éditons(([[commande:editeur:​vim]])) ​simplement ​ce fichier en user(([[commande:su]])) : +Donc nous éditons(([[:​doc:​editeurs:vim:vim]] ou [[:​doc:​editeurs:​nano]])) ce fichier en user(([[:​doc:​systeme:su]])) : 
-<​code ​bash> +<​code ​user>nano ~/.ssh/​known_hosts</​code>​
-vim .ssh/​known_hosts</​code>​+
  
-et nous supprimons cette 9ème ligne. \\ +et nous supprimons cette 9ème ligne.
-Ainsi, à notre prochain contact vers le serveur, après le //yes// d'​acceptation habituelle, une nouvelle cle d'​identification sera créée et tout ira pour le meilleur des mondes ssh possible.+
  
-//Merci à l'​attention du //**captnfab**// qui a fomenté cette explicationQue ses genoux ne soient jamais cailleux !// ;-)+À 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.
  
-//Testé par //​**smolski**//​ le 25/​10/​2012//​ - squeeze+==== TP ====
  
-===== Configuration avancée ===== +  ​* 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]] 
-voir : [[config:​ssh|Configuration de SSH]] +  * Utiliser ssh comme un serveur de fichiers : [[:​doc:​reseau:​sftp | sftp installation et configuration]]
- +
- +
- +
-===== 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. +
-  ​* Pour ''​COPIER''​ un fichier sécurisé vous devez vous servir de : [[commande:​scp|SCP]] +
-  * Pour ''​MONTER''​ les fichiers servez-vous de : [[commande:​sshfs|SSHFS]]+
  
-===== Lien à suivre ===== 
  
-  * [[commande:​scp | La commande scp]] Copies ssh entre machines distantes. 
-  * [[manuel:​sftp | sftp installation et configuration]] 
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