SSH
- Trucs et astuces du BR
- Diagnostiquer une panne réseau
- Configurer un routeur dans son casert
- Création d'un compte Sigma
- Comment récupérer mes données que j'ai effacées sur mon disque dur ?
- Comment utiliser Git ? (Pour les projets en équipe)
- Comment utiliser SSH ?
- Mettre en place SSH pour Gitlab
- Comprendre les différents identifiants à l'X
- Comment imprimer à l'X ?
SSH (Secure Shell) est un protocole permettant d'obtenir un accès Shell (ie: ouvrir un terminal de commandes) sur une machine distante en toute sécurité. Il permet d'exécuter des commandes à distance, de copier des fichiers depuis/vers une machine distante, etc.
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 des machines visibles à l'extérieur, 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. Au BR, on te conseille d'utiliser une clef RSA 4096 bits, tu peux aussi y ajouter un commentaire :
ssh-keygen -t rsa -b 4096 -C "<comment>"
Export vers les autres machines
Il faut ensuite envoyer le fichier contenant la clé publique (~/.ssh/id_rsa.pub) sur les machines auxquelles on veut se connecter :
Avec ssh-copy-id
Cette commande ne fonctionne pas sur windows. Elle demandera le mot de passe utilisateur, pour la dernière fois.
ssh-copy-id login_distant@machine_distante
Manuellement
Sur les mac, par exemple, ssh-copy-id n'est pas disponible. Il faut donc rajouter manuellement la clé publique à liste des clés autorisées sur la machine distante en copiant le contenu de ~/.ssh/id_rsa.pub (en local) dans .ssh/authorized_keys (sur la machine distante) :
- sur la machine locale :
scp ~/.ssh/id_rsa.pub login_distant@machine_distante:~
- sur la machine distante :
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
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. Il devient alors intéressant d'utiliser l'option ForwardAgent (cf plus bas) pour pouvoir se balader librement entre les différentes machines.
Connection
Pour se connecter, on tape
ssh login_distant@machine_distante
Si on a lancé le ssh-agent avant (ssh-add), le client ssh va demander la passphrase de la clé, puis établir la connexion.
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
- mon client va voir qu'il a la clé privée correspondant
- mon client me demander ma passphrase
- 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
Proxy
On peut également y rajouter les options relatives au Proxy :
ProxyCommand socat - PROXY:kuzh.polytechnique.fr:%h:%p,proxyport=8080
ou
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="socat - PROXY:kuzh.polytechnique.fr:%h:%p,proxyport=8080" login_distant@nom.complet.de.la.machine
ou
ssh -A -o ProxyCommand="connect -H kuzh.polytechnique.fr:8080 %h %p" login_distant@nom.complet.de.la.machine
Passer par un hôte intermédiaire
On a parfois besoin de se logger en SSH de A sur B pour ensuite se logger de B sur C. Pour automatiser ça, il suffit de mettre ces lignes dans ~/.ssh/config
Host C ProxyCommand ssh login@B -W %h:%p
Accès aux sites internes
Tu peux accéder aux sites visibles normalement uniquement à l'extérieur du plâtal grâce à un tunnel SSH. Cette manipulation permet d’accéder n’importe où aux sites accessibles que sur le plâtal.
Installation
Installer l’extension “Foxy Proxy Standard” sur votre navigateur. Sur Firefox, vous pouvez trouver cette extension sur ce lien. Appuyer sur l’icône Foxy Proxy puis sur options > ajouter. Sélectionner le type de Proxy SOCKS5, rentrer l’adresse IP 127.0.0.1 et le port 9090. Vérifier que “Send DNS through SOCKS5 proxy” est bien coché. Donner un titre quelconque au proxy. Appuyer sur sauvegarder. Vous pouvez ajouter des modèles, pour que le proxy ne soit activé que sur certains noms de domaines.
Lancement
Ouvrir un terminal. Sur Windows, taper cmd dans la barre de recherche windows et appuyer sur entrer Sur la fenêtre terminal ouverte, taper la commande suivante puis rentrer votre mot de passe (identifiants polytechnique.edu).
ssh -D 9090 nom.prenom@ferrari.polytechnique.fr
Appuyer sur l’icône Foxy Proxy et cliquer sur le proxy nouvellement crée. C’est bon vous êtes connecté, vous pouvez vérifier que cela a bien fonctionné en allant sur trigramme.binets.fr par exemple
Précisions
Il faut bien laisser la fenêtre de terminal ouverte lorsque l’on utilise le proxy, pour garder la connexion SSH. Pour arrêter le proxy, il faut bien penser à remettre l’option désactiver sur l’extension Foxy Proxy. Pour se reconnecter, il suffit de refaire la manipulation décrite dans lancement.
Fonctionnement
Ce proxy permet en fait simplement de faire transiter la connexion internet à travers l’un des ordinateurs de la salle info. Dans ce tutoriel, l’ordinateur ferrari a été utilisé mais on peut prendre n’importe lequel.
Pour les non décrocheurs, qui n'ont plus de compte DSI, suivre la page Configuration du proxy.