SSH pour sécuriser les échanges

Anne ssh réseau firefox

Diverses astuces pour travailler sur une machine distante.

Générer une clé

$ ssh-keygen -t rsa -b 2048

Vérifier qu’on a bien :

$ chmod 700 .ssh
$ chmod 644 .ssh/id_rsa.pub
$ chmod 600 .ssh/id_rsa

et envoyer la clé publique .ssh/id_rsa.pub, au gestionnaire du dépot svn par exemple.

Autre exemple : pour se connecter à une machine distante via ssh en utiliser les clés, il faut copier .ssh/id_rsa.pub dans .ssh/authorized_keys sur la machine distante. Le mot de passe à donner pour se connecter est alors celui de la clé, et non celui du compte distant. Si on utilise ssh-add (voir ci-dessous), on n’a pas besoin de donner

Mémoriser le mot de passe le temps d’une session

$ ssh-add

permet de donner le mot de passe de la clé privée qu’une seule fois lors d’une session.

On peut préciser le nom de fichier s’il n’est pas standard ou si on en a plusieurs.

Utiliser Firefox sur un serveur distant

ou comment accéder à un intranet quand on est loin…

Le problème est de savoir utiliser firefox (ou autre) pour éditer un wiki sur un site auquel on n’a pas accès de l’extérieur.

Solution 1

$ ssh -YC -p20 moi@le.serveur.com

puis lancer firefox, éventuellement firefox -no-remote s’il y a déjà une instance qui tourne sur la machine. On alors accès aux adresses accessibles uniquement sur le serveur interne. Ca marche, mais c’est super lent car la session X passe par le tunnel ssh…

Solution 2

  • ouvrir un tunnel ssh avec l’option -L :

      $ ssh -L 8080:host:80 moi@le.serveur.com
    

    (en remplaçant host par la valeur appropriée bien sur).

  • configurer firefox dans :

      Edition/Préférences/Avancé/Réseau/Paramètres
    

    sélectionner et configurer :

HTTP proxy : localhost
Port : 8080

et ça marche !

Solution 3

Autre solution que j’avais essayé, mais que je n’ai pas réussi à faire fonctionner (il faudrait que je ré-essaye…)

  • ouvrir un tunnel ssh avec l’option -D :

      $ ssh -D 3333 moi@le.serveur.com
    
  • configurer firefox dans :

      Edition/Préférences/Avancé/Réseau/Paramètres
    

    sélectionner SOCKS v5 avec

Hôte SOCKS : 127.0.0.1
Port : 3333
  • on peut tester que l’adresse IP a changé après avoir configuré le proxy avec http://whatismyip.com/
  • MAIS, je n’ai pas accès aux adresses internes…

Une autre solution possible (qui n’a pas l’air de fonctionner) :

  • installer tsocks
  • le configurer dans /etc/tsocks.conf avec
server = 127.0.0.1
server_type = 5
server_port = 3333
  • lancer :

    $ tsocks firefox

Il faudrait essayer de comprendre pourquoi ça ne fonctionne pas.

Nomage d’une machine distante

Pour donner un petit nom à une machine distante, il suffit de modifier le fichier ~/.ssh/config. Par exemple, si on veut pouvoir faire :

$ ssh maison

au lieu de :

$ ssh germaine@ssh.a_la_maison.fr

il suffit d’ajouter :

Host maison
  User germaine
  HostName ssh.a_la_maison.fr

Connection à travers une passerelle

En résumé, au lieu de faire :

germaine@portable: $ ssh bidochon@entreprise.com
bidochon@passerelle: $ ssh machine
bidochon@machine: $

On peut modifier le fichier ~/.ssh/config de la façon suivante :

Host boulot
  User bidochon
  ServerAliveInterval 30
  ProxyCommand ssh -q bidochon@entreprise.com "/usr/bin/nc -w 90 machine 22"

Pour toute les explications, voir .

Montage d’un système de fichier distant

Pour monter un système de fichier distant en local, on utilise sshfs. La première fois, il faut d’abord créer le point de montage :

$ mkdir ~/maison

On peut alors faire le montage de la façon suivante :

$ sshfs germaine@ssh.a_la_maison.fr: ~/maison

Plus généralement, la commande est de la forme :

$ sshfs [user@]host:[dir] mountpoint [options]

Pour le démonter :

$ fusermount -u ~/maison

Pour automatiser le montage, voir sur cette page où c’est très bien expliqué (mais je n’ai pas testé…).

Voir aussi :