Accueil > Informatique > Linux > ssh sous linux

ssh sous linux

mercredi 11 février 2009, par frederic

Description

ssh (Secure shell) est un protocole de connections.

Dans l’exemple on utilise openssh-server pour le serveur, et openssh-client comme client.

Il exsite deux méthode de connections :
 Par utilisateur/mot de passe
 Par clé publique/clé privé

connections par utilisateur/mot de passe

Il est forcément nécessaire de disposer d’un serveur ssh et d’un client ssh.

Serveur

Il faut activer l’authentification par utilisateur/mot de passe

dans le fichier /etc/ssh/sshd_config il faut mettre :

PasswordAuthentification yes

Client

Pour le client il suffit de rentrer en ligne de commande :

ssh utilisateur@serveur.org

Le mot de passe vous sera demandé.

Connections par clé publique/clé privé

L’autre méthode pour se connecter est d’utiliser le système de clé publique/clé privé. C’est le principe de la cryptographie asymétrique

Client

Il est nécessaire de générer une clé sur le client :

ssh-keygen -t dsa

Le système demande où enregistrer la clé. Par défaut c’est dans :  /.ssh/id_dsa. Il est demandé aussi une passphrase. Ce n’est pas une obligation, mais cela permet de protéger cette clé.

La clef publique a été créée avec la nouvelle clé privée. Elles sont habituellement localisées dans le dossier caché :
 «  /.ssh/id_dsa.pub » pour la clé publique
 «  /.ssh/id_dsa » pour la clé privé.

La clé publique doit être envoyé au serveur. Sur le client lancez la commande :

ssh-copy-id -i ~/.ssh/id_dsa.pub <username>@<ipaddress>

Dans le cas ou l’authentification par mot de passe est désctivé, l’autre methode pour copié la clé publique sur le serveur :

ssh login@serveur "echo $(cat ~/.ssh/id_dsa.pub) >> .ssh/authorized_keys"

Dorénavant pour se connécter au serveur il suffit de lancé :

ssh <username>@<ipaddress> -p <num_port>

Le mot de passe de la clé privé est demandé si on en a mis un.

La copie de fichier en ssh

La copie en ssh ressemble fortement a la copie de cp.

Pour copier un fichier à partir d’un ordinateur sur un autre avec SSH, vous devrez utiliser la commande scp. Cela ressemblera à ceci :

scp <fichier> <username>@<ipaddress>:<DestinationDirectory>

Ou en termes profanes, si je désirais copier un fichier d’un de mes ordinateurs à l’autre, je procède de cette manière :

scp fichier.txt utilisateur@serveur:/home/utilisateur

Ou copier un répertoire vers un ordinateur :

scp -r répertoire utilisateur@serveur:/home/utilisateur/

Vous pouvez aussi bien copier des fichiers à partir des ordinateurs à distance sur votre disque local :

scp utilisateur@serveur:/home/utilisateur/fichier.txt .

Les fichiers

$HOME/.ssh/known_hosts
Enregistre les clefs de tous les hôtes sur lesquelles l’utilisateur s’est connecté et qui n’apparaissent pas dans le fichier /etc/ssh/ssh_known_hosts Voir sshd(8).

$HOME/.ssh/identity, $HOME/.ssh/id_dsa, $HOME/.ssh/id_rsa
Contiennent les identités d’authentification de l’utilisateur, respectivement pour RSA du protocole 1, DSA du protocole 2 et RSA du protocole 2. Ces fichiers contiennent des données sensibles et ne doivent être lisibles que par l’utilisateur et non accessibles aux autres utilisateurs (en lecture, écriture et exécution). Note : ssh ignore purement et simplement un fichier de clef, s’il est accessible aux autres utilisateurs. On peut spécifier une phrase de passe (passphrase) lors de la création de la clef. La phrase de passe (passphrase) est utilisée pour crypter la partie sensible de ce fichier à l’aide de 3DES.

$HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub, $HOME/.ssh/id_rsa.pub
Contiennent les clefs publiques utilisées pour l’authentification (partie publique du fichier d’identité lisible par un humain). Il faut ajouter le contenu du fichier $HOME/.ssh/identity.pub dans le fichier $HOME/.ssh/authorized_keys sur chacune des machines sur lesquelles l’utilisateur souhaite se connecter à l’aide de la méthode d’authentification RSA de la version 1 du protocole. Il faut ajouter le contenu des fichiers $HOME/.ssh/id_dsa.pub et $HOME/.ssh/id_rsa.pub dans le fichier $HOME/.ssh/authorized_keys sur chacune des machines sur lesquelles l’utilisateur souhaite se connecter à l’aide de la méthode d’authentification DSA et RSA de la version 2 du protocole. Le contenu de ces fichiers n’est pas sensible et peut rester accessible aux autres utilisateurs (mais ce n’est pas obligatoire). Ces fichiers ne sont pas nécessaires, et de toute façon jamais utilisés automatiquement. C’est juste une commodité pour l’utilisateur.

$HOME/.ssh/config
C’est le fichier de configuration utilisateur. Le format de ce fichier ainsi que les options de configuration sont décrits dans ssh_config5. Étant donné les abus potentiels, ce fichier doit avoir strictement comme permission : lecture/écriture pour l’utilisateur, et inaccessible aux autres utilisateurs.

$HOME/.ssh/authorized_keys
Liste les clefs publiques (RSA/DSA) utilisables pour se connecter en tant que cet utilisateur. Le format de ce fichier est décrit dans la page de manuel sshd(8). Dans le cas le plus simple, le format est semblable à celui des fichiers d’identité « .pub ». Ce fichier n’est pas très sensible, mais il est recommandé qu’il soit accessible en lecture/écriture à l’utilisateur, et inaccessible aux autres utilisateurs.

ssh dans les scripts

Pour pouvoir utiliser ssh dans des script, il est nécessaire de mettre en oeuvre le méthode de clé publique/clé publique sans mot de passe à la passphrase. ensuite on utilise les commande de ssh/scp normalement. Aucun mot de passe ne sera demandé. C’est la clé privé, qui permet de crypter l’échange.

Choisir entre RSA et DSA

Le cryptage par DSA est plus fort que le cryptage par RSA même si le cryptage RSA est plus rapide à lire.
 RSA : Rivest_Shamir_Adleman
 DSA : Digital_Signature_Algorithm


Voir en ligne : Open Ssh