Ce document me sert de mémo pour installer et utiliser SSH sous Linux. Je le diffuse en espérant qu’il puisse servir à d’autres personnes.
Les instructions de ce document sont données pour une Debian ETCH, mais il est possible de les adapter aux autres distributions.
Pré-requis
Avoir installé une Debian de Base :
Installation et configuration de SSH
Installation du paquet :
# aptitude install openssh-client openssh-server
Une fois les paquets installés, le client et le serveur
seront directement utilisables. Il est possible depuis ce poste de se
connecter à un autre serveur SSH ou il est possible de se connecter à ce
poste via SSH depuis un autre poste.
Cependant, il est préférable pour augmenter la sécurité, de modifier le fichier de configuration :
Fichier de configuration du démon sshd :
/etc/ssh/sshd_config
Pour interdire la connexion directe sous root, modifier la ligne suivante :
PermitRootLogin no
Ajouter la ligne suivante pour autoriser uniquement pglinux
AllowUsers pglinux
Redémarrer le démon pour prendre en compte les modifications :
/etc/init.d/ssh restart
Commandes pour se connecter à un serveur distant
La commande suivante, permet de se connecter au serveur pgdebian sous l’identité de celui qui lance la commande :
$ ssh pgdebian
Il est possible de préciser un autre login avec le paramètre -l :
$ ssh -l root pgdebian
Il est possible aussi d’utiliser la syntaxe suivante pour se connecter à pgdebian sous root :
$ ssh root@pgdebian
Connexion à un serveur SSH via un autre serveur SSH
Si vous avez deux serveurs SSH mais qu’il est nécessaire
de se connecter au premier pour pouvoir accéder au deuxième, cette
commande permet de réaliser les deux connexions :
ssh root@serveur1 -t ssh root@serveur2
Remarque : Cela est surtout intéressant si la connexion aux serveurs se fait via une clé public (cf chapitre suivant)
Connexion SSH en utilisant une clé privée et une clé public
Une connexion SSH en utilisant une clé privée et une clé
public est plus sécurisée qu’une connexion classique par mot de passe.
De plus elle permet d’éviter de ressaisir un mot de passe à chaque
connexion.
Création de la clé privée et de la clé public :
$ ssh-keygen -t dsa
Après la saisie de la pass-phrase (Mot de passe long), cette commande va générer deux fichiers dans le dossier « /.ssh » :
Ensuite, il faut exporter la clé public sur le ou les serveurs distant à utiliser avec ssh :
$ ssh-copy-id -i .ssh/id_dsa.pub root@NomDuServeurSSH
Après la copie de cette clé, à chaque connexion via ssh, la pass-phrase sera demandée.
Pour éviter de saisir la pass-phrase (qui normalement
est encore plus longe que le mot de passe), il est possible d’utiliser
le démon ssh-agent qui se chargera de mémoriser la pass-phrase pour
éviter de la ressaisir :
Sous Debian le démon ssh-agent est lancé automatiquement au démarrage de la session.
La commande suivante, permet de mémoriser la pass-phrase une fois pour toute pendant la durée de la session :
$ ssh-add
Une fois cette commande saisie, il est possible de se
connecter aux différentes serveurs ssh sans saisir aucun mot de passe ou
pass-phrase.
$ ssh root@NomDuServeurSSH
Copier des fichiers entre un serveur et un client ssh avec scp
La commande scp livrée avec le paquet ssh, permet de copier des fichiers entre le serveur et le client ssh d’une manière sécurisée.
La commande suivante, permet d’envoyer dans le
répertoire /tmp du serveur pgdebian le fichier /etc/fstab disponible sur
le serveur local :
$ scp /etc/fstab root@pgdebian:/tmp
Exécuter une commande à distance avec ssh
La commande ssh, permet également d’exécuter une commande sur un serveur distant.
Par exemple, la commande suivante, permet de se
connecter sous root sur l’ordinateur pgdebian et d’exécuter la commande
halt pour arrêter l’ordinateur :
$ ssh root@pgdebian halt
Lancer une application graphique disponible sur un serveur distant
Pour lancer une application graphique sur un serveur distant, il suffit de se connecter avec l’option « -X » :
$ ssh -X user@serveur
Et de lancer l’application graphique en ligne de commande.
Le paramètre « -C » permet de comprimer les données ce qui améliore (un peu) la réactivité :
$ ssh -CX user@serveur