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 →
Ci-dessous, les différences entre deux révisions de la page.
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 22:37] bendia doc:systeme:ssh renommé en doc:reseau:ssh:client (réorganisation doc ssh) |
doc:reseau:ssh:client [15/05/2014 12:29] Hypathie [Installation] |
||
---|---|---|---|
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>en-chantier}} | + | * Suivi : {{tag> à-compléter à-tester}} |
* Création par <vous> <date> | * Création par <vous> <date> | ||
* 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 | Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | === Nota === | + | **Nota :** |
Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
Ligne 87: | Ligne 87: | ||
== Exportation de la cle == | == 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. | 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> | <code user>ssh-copy-id -i /home/user/.ssh/id_dsa.pub user@192.168.x.x</code> | ||
- | mot_de_passe (serveur distant) | + | * 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.) | ||
| | ||
- | Notez qu'on peut égalementcopier 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. | + | <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> | ||
+ | A présent, c'est la passphrase qui sera demandée. | ||
+ | |||
+ | <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é le contenu du fichier ~/.ssh/id_dsa.pub (côté client), 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 lui donner les droits 700 (lecture + écriture +exécution pour l'utilisateur);\\ | ||
+ | puis créer le fichier **~/.ssh/authorized_keys** (cela se fait au moment de la copie) et lui donner les droits 600 (lecture + écriture 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> | ||
+ | retour : | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | * Pour donner uniquement les droits de lecture au fichier ~/.ssh/authorized_keys : | ||
+ | |||
+ | <code user> | ||
+ | chmod 400 ~/.ssh/authorized_keys | ||
+ | </code> | ||
+ | Retour : | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | * 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> | ||
- | A présent, lors de votre connexion, seule votre éventuelle //passphrase// iniqué lors de la génération de la clé vous sera demandé, mais plus votre mot de passe. | ||
== ssh-agent == | == ssh-agent == | ||
- | FIXME | + | 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 === | === Navigation via SSH === | ||
Ligne 126: | Ligne 275: | ||
*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 quelle user et sur quelle ip on va établir la connection. | ||
- | |||
- | === Rediriger un port local vers un port distant === | ||
- | |||
- | FIXME | ||
- | |||
- | === Rediriger un port distant vers un port local === | ||
- | |||
- | FIXME | ||
==== Configuration ==== | ==== Configuration ==== | ||
Ligne 153: | Ligne 294: | ||
<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 192: | Ligne 340: | ||
* Pour ''COPIER'' un fichier sécurisé vous devez vous servir de : [[:doc:reseau:scp|SCP]] | * Pour ''COPIER'' un fichier sécurisé vous devez vous servir de : [[:doc:reseau:scp|SCP]] | ||
- | * Pour ''MONTER'' les fichiers servez-vous de : [[:doc:reseau:sshfs|SSHFS]] | + | * Pour ''MONTER'' les fichiers servez-vous de : [[:doc:reseau:ssh:sshfs|SSHFS]] |
* Utiliser ssh comme un serveur de fichiers : [[:doc:reseau:sftp | sftp installation et configuration]] | * Utiliser ssh comme un serveur de fichiers : [[:doc:reseau:sftp | sftp installation et configuration]] | ||