« SSH » : différence entre les versions

De WikiBR
m (a renommé Accès de l'exterieur en Accès SSH par clé publique: Il s'agit d'une procédure plus générale)
(Ajout de détails variés)
Ligne 1 : Ligne 1 :
Pour se connecter en ssh à deiz depuis l'extérieur.
SSH est un protocole permettant d'obtenir un accès Shell sur une machine distante en toute sécurité.
En local :
Il permet, via SCP, de transférer des fichiers entre diverses machines.
ssh-keygen -t rsa
Laisser la valeur par défaut pour le nom du fichier (~/.ssh/id_rsa) et taper une passphrase (de plus de 5 caractères). Ceci va générer en local un couple clé privée / clé publique.


Il faut ensuite envoyer le fichier contenant la clé publique (~/.ssh/id_rsa) sur deiz, depuis un ordi à l'intérieur de l'X par exemple :
Nous allons voir ici quelques options intéressantes.
scp .ssh/id_rsa.pub pseudo_de_connexion@deiz:~


Puis, sur deiz, rajouter la clé aux clés autorisée en la rajoutant dans le fichier authorized_keys :
== Clé publique ==
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
Il est possible de se connecter en SSH à une machine sans avoir à taper son mot de passe !


Voila, pour se connecter faire enfin :
C'est parfois la seule manière, par exemple dans le cas de deiz depuis l'extérieur de l'X.
ssh pseudo_de_connexion@deiz.polytechnique.fr


'''Fonctionnement''' : lorsque je tente de faire un ssh deiz
=== Création de la clé ===
En local, sur une machine où l'on est le seul administrateur (machine perso) :
ssh-keygen
Laisser la valeur par défaut pour le nom du fichier (~/.ssh/id_rsa) et taper une passphrase (longue et complexe). Ceci va générer en local un couple clé privée / clé publique, chiffrée en RSA.
 
=== Export vers les autres machines ===
Il faut ensuite envoyer le fichier contenant la clé publique (~/.ssh/id_rsa) sur les machines auxquelles on veut se connecter :
ssh-copy-id login_distant@machine_distante
(ou, manuellement, en copiant le contenu de .ssh/id_rsa.pub (en local) dans .ssh/authorized_keys (sur la machine distante))
 
=== Utilisation ===
Pour se connecter, lorsque l'on tape
ssh login_distant@machine_distante
 
Le client ssh va demander la passphrase de la clé, puis établir la connexion.
 
=== ssh-agent ===
Il s'agit d'un programme qui vient faciliter l'utilisation des clés privées : en le lançant au début de ta session graphique, il suffit de taper dans un shell
ssh-add
pour qu'il demande la passphrase de la clé privée, puis la charger en mémoire : plus besoin de taper cette passphrase lors d'un SSH !
Tu peux indiquer par l'option ''-A'' dans ton ssh que tu souhaites ''forwarder'' l'agent : si tu as exporté ta clé publique sur les machines hostA et hostB, alors en faisant
ssh -A hostA
puis, sur hostA
ssh hostB
 
le second ssh utilisera le ssh-agent qui tourne localement sur ton ordinateur pour récupérer la clé privée et s'authentifier auprès de hostB.
 
=== Fonctionnement===
Lors d'un SSH par clé privée / clé publique
# le serveur ssh va indiquer au client "j'accepte les clés publiques suivantes" en lisant le fichier authorized_keys
# le serveur ssh va indiquer au client "j'accepte les clés publiques suivantes" en lisant le fichier authorized_keys
# mon client va voir qu'il a la clé privée correspondant
# mon client va voir qu'il a la clé privée correspondant
Ligne 19 : Ligne 43 :
# si la passphrase est bonn, mon client va établir le ssh sans me demander mon mot de passe user
# si la passphrase est bonn, mon client va établir le ssh sans me demander mon mot de passe user


Il est aussi possible de se logguer sans rien taper :
== Mémorisation de configuration SSH ==
# lancer ssh-agent au début de la session user sur la machine local
 
# faire "ssh-add" : il te demande la passphrase de ta clé et la charge en mémoire
Il est possible de configurer SSH pour ne pas avoir à préciser le login ou le nom complet de la machine.
 
Il faut éditer le fichier ''.ssh/config'' :
 
Host alias
Hostname nom.complet.de.la.machine
User login_distant
 
On peut également y rajouter les options relatives au Proxy :
ProxyCommand connect -H kuzh.polytechnique.fr:8080 %h %p
ou celles relatives au transfert d'agent ssh :
ForwardAgent yes
 
Ainsi,
ssh alias
sera traduit automatiquement en
ssh -A -o ProxyCommand="connect -H kuzh.polytechnique.fr:8080 %h %p" login_distant@nom.complet.de.la.machine

Version du 10 novembre 2009 à 12:33

SSH est un protocole permettant d'obtenir un accès Shell sur une machine distante en toute sécurité. Il permet, via SCP, de transférer des fichiers entre diverses machines.

Nous allons voir ici quelques options intéressantes.

Clé publique

Il est possible de se connecter en SSH à une machine sans avoir à taper son mot de passe !

C'est parfois la seule manière, par exemple dans le cas de deiz depuis l'extérieur de l'X.

Création de la clé

En local, sur une machine où l'on est le seul administrateur (machine perso) :

ssh-keygen

Laisser la valeur par défaut pour le nom du fichier (~/.ssh/id_rsa) et taper une passphrase (longue et complexe). Ceci va générer en local un couple clé privée / clé publique, chiffrée en RSA.

Export vers les autres machines

Il faut ensuite envoyer le fichier contenant la clé publique (~/.ssh/id_rsa) sur les machines auxquelles on veut se connecter :

ssh-copy-id login_distant@machine_distante

(ou, manuellement, en copiant le contenu de .ssh/id_rsa.pub (en local) dans .ssh/authorized_keys (sur la machine distante))

Utilisation

Pour se connecter, lorsque l'on tape

ssh login_distant@machine_distante

Le client ssh va demander la passphrase de la clé, puis établir la connexion.

ssh-agent

Il s'agit d'un programme qui vient faciliter l'utilisation des clés privées : en le lançant au début de ta session graphique, il suffit de taper dans un shell

ssh-add

pour qu'il demande la passphrase de la clé privée, puis la charger en mémoire : plus besoin de taper cette passphrase lors d'un SSH ! Tu peux indiquer par l'option -A dans ton ssh que tu souhaites forwarder l'agent : si tu as exporté ta clé publique sur les machines hostA et hostB, alors en faisant

ssh -A hostA

puis, sur hostA

ssh hostB

le second ssh utilisera le ssh-agent qui tourne localement sur ton ordinateur pour récupérer la clé privée et s'authentifier auprès de hostB.

Fonctionnement

Lors d'un SSH par clé privée / clé publique

  1. le serveur ssh va indiquer au client "j'accepte les clés publiques suivantes" en lisant le fichier authorized_keys
  2. mon client va voir qu'il a la clé privée correspondant
  3. mon client me demander ma passphrase
  4. si la passphrase est bonn, mon client va établir le ssh sans me demander mon mot de passe user

Mémorisation de configuration SSH

Il est possible de configurer SSH pour ne pas avoir à préciser le login ou le nom complet de la machine.

Il faut éditer le fichier .ssh/config :

Host alias
Hostname nom.complet.de.la.machine
User login_distant

On peut également y rajouter les options relatives au Proxy :

ProxyCommand connect -H kuzh.polytechnique.fr:8080 %h %p

ou celles relatives au transfert d'agent ssh :

ForwardAgent yes

Ainsi,

ssh alias

sera traduit automatiquement en

ssh -A -o ProxyCommand="connect -H kuzh.polytechnique.fr:8080 %h %p" login_distant@nom.complet.de.la.machine