Sources
Présentation
SSH est un protocole qui permet de créer un tunnel entre deux ordinateurs. Sous Linux c'est une manière simple de d'accéder à un autre ordinateur.
La première chose que l'on voit en ssh est la ligne de commande qui rebute plus d'un utilisateur mais, on peut facilement déporter une application comme on le ferait dans le cadre d'une prise de contrôle à distance sauf que l'instance ne sera affichée que sur l'ordinateur ayant demandé la connexion.
Pour bien comprendre le fonctionnement, on peut faire un déport de VLC. une fois créer, le VLC affiché sera celui du serveur mais le son continuera de sortir du serveur.
Installation
sudo apt-get install openssh-server
Bien que ce ne soit pas obligé, une installation sur le client et le serveur peut être utile. Par défaut le client est installé dans "presque" toutes les distributions Linux.
Paramétrage
Le fichier de configuration du serveur SSH est /etc/ssh/sshd_config. À ne pas confondre avec le fichier /etc/ssh/ssh_config, qui est le fichier de configuration du client SSH.
Port 22
PermitRootLogin yes
X11Forwarding yes
sudo /etc/init.d/ssh reload
il faudra aussi ouvrir un port dans le parefeu.
sudo ufw enable
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 22
Utilisation
ssh login@nom_DNS_du_serveur_SSH [-p <num_port>]
p étant par défaut 22, ne rien mettre sauf si vous utiliser un autre port.
par exemple
ssh Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Il sera ensuite demandé le mot de passe de "login" (ou "utilisateur" dans l'exemple) qu'il faudra taper en aveugle comme tous les mots de passe en ligne de commande.
Si c'est la première connexion SSH depuis ce client vers ce serveur, il vous demande si le fingerprint de la clef publique présentée par le serveur est bien le bon...
répondez yes, et la clef publique du serveur est alors rajoutée au fichier ~/.ssh/known_hosts.
Si vous vous êtes déjà connecté depuis ce client vers le serveur, sa clef publique est déjà dans le fichier ~/.ssh/known_hosts et il ne vous demande donc rien.
Si votre association a changé (un autre ordinateur avec une adresse IP référencée), copier / coller avec le texte qui sera indiqué pour retirer l'ancienne association puis refaite la connexion SSH comme si c'était la première fois.
Aller plus loin
Tunnelisation d'applications graphiques
Je parlais, au début de ce tutoriel, de VLC. Pour utiliser VLC, ou d'autres applications graphiques, à travers SSH, il faut ajouter un "-X" (et avoir modifié sshd_config avec X11Forwarding yes).
cela donne :
ssh -X login@nom_DNS_du_serveur_SSH
par exemple
ssh -X Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
puis on lance le logiciel en ligne de commande, ici VLC :
vlc
Retenez bien que le VLC est celui du serveur et non de votre machine locale ce qui va demander une adaptation. Par exemple si vous ouvrer un fichier depuis VLC, vous aurez accès aux dossiers et fichiers du serveur comme si vous étiez "utilisateur" sur le serveur (dans notre exemple). Le drag and drop n'est pas plus possible; ou plutot à éviter... je vous invite à essayer, rien de dangereux ne se passera.
Authentification par clefs
Quand on est sur un réseau local et que l'on est organisé, on peut vouloir se connecter sans mot de passe. L'idée est de créer une configuration avec des clés paramétrée une fois pour toute.
Pour générer un couple de clefs DSA,
tapez :
ssh-keygen -t dsa
Les clefs générées ont par défaut une longueur de 1024 bits, ce qui est aujourd'hui considéré comme suffisant pour une bonne protection.
La clef privée est stockée dans le fichier ~/.ssh/id_dsa avec les permissions 600 et la clef publique est stockée dans le fichier ~/.ssh/id_dsa.pub avec les permissions 644.
Lors de la création, OpenSSH vous demande une pass phrase qui est un mot de passe pour protéger la clef privée. Cette pass phrase sert à chiffrer la clef privée. La pass phrase vous sera alors demandée à chaque utilisation de la clef privée, c'est-à-dire à chaque fois que vous vous connecterez en utilisant cette méthode d'authentification. Un mécanisme appelé ssh-agent permet de ne pas rentrer le mot de passe à chaque fois.
Note
Vous pouvez à tout moment changer la pass phrase qui protège votre clef privée avec la commande ssh-keygen -p.
Autoriser votre clef publique
Pour cela, il suffit de copier votre clef publique dans le fichier ~/.ssh/authorized_keys de la machine sur laquelle vous voulez vous connecter à distance. La commande suivante permet de réaliser cette opération via SSH :
ssh-copy-id -i ~/.ssh/id_dsa.pub login@nom_DNS_du_serveur
pour notre exemple
ssh-copy-id -i ~/.ssh/id_dsa.pub Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
puis se connecter normalement; le mot de passe ne sera plus demandé.