Autres
AideEnLigne
CahierDeBrouillon
Présentation
Administration

MesLectures
[Articles publiés]
[Blog Affordance]
[LibreOffice en ligne]
[Journal d'Ophelia]
[Kim Khal]

Informations
[Rue 89]

DNS etc
[Robtex]
Logins
Votre ID: 111
Nom:
Login utilisateur
Mot de passe éditeur

ProxyTunneling


Utilisation de SSH sous Un*x pour créer un tunnel dans un proxy HTTP

 Il s'agit de pouvoir se logger sur une machine sur Internet depuis un PC situé derrière un proxy http. C'est possible à faire, grace a ssh. Pour cela, vous devez disposer d'un compte sur une machine Un*x du LAN derrière le proxy, et d'un compte sur une machine sur Internet. Vous pourrez ainsi ouvrir une connexion cryptée, à travers le proxy http du Lan, vers une machine sur Internet.

Configuration du poste Internet distant sous Un*x

Sur cette machine, vous devez avoir un accès sous l'id de root. On suppose que cette machine a comme nom apollo et comme adresse TCP/IP 123.213.165.77

Démarrer un daemon sshd sur le port 443. Pour un proxy cache htpp, ce port sera probablement accepté. Vous pouvez choisir un autre port, a condition que ce port soit accepté par le proxy. Certains proxys ouvrent le port 109 ou 110 pour le pop.

 apollo:/usr/root#sshd -p 443

Sur cette machine distante, c'est tout ce qu'il y a à faire.

Configuration du poste local sous Un*x

Sur le poste local du LAN, il faut bien sûr une version de OpenSSH? et une version de proxytunnel. La dernière version de Openssh est disponible sur le [site officiel OpenSSH]. La source de proxytunnel est disponible [ici] ; vous devrez donc compiler proxytunnel. Une fois compilé et installé, par exemple dans le répertoire /usr/local/bin, se logger en tant qu'utilisateur normal (ici, c'est klix), puis, dans le répertoire .ssh, créer le fichier config avec les informations suivantes :

 Host apollo
 HostName? 123.213.165.77
 KeepAlive? yes
 ProxyCommand? /usr/local/bin/proxytunnel -g proxy-server -G 3128 -d 123.213.165.77 -D 443
 Host MonSite?
 Hostname norge.freeshell.org

Host
c'est le nom que vous donnez à la machine distante ; ici apollo
Hostname
c'est le nom réel de la machine distante, ou bien sons adresse TCP/IP
KeepAlive?
indique que la session ssh ne sera pas interrompue au bout d'un certain temps
ProxyCommand?
sur cette ligne, il faut fournir le nom du tunnel proxy utilisé avec la syntaxe appropriée.

Dans le cas de proxytunnel, les paramètres de la ligne de commande sont :

  • -g <Nom du serveur proxy local>
  • -G <Numéro du port sur le proxy>
  • -d <adresse du serveur distant>
  • -D <le port de la machine distante sur lequel écoute le daemon sshd>

Ensuite, pour éviter d'avoir à entrer le mot de passe nécessaire à ssh pour lire la clef privée, vous pouvez lancer les commandes suivantes. La commande ssh_agent est chargée de lire vos clefs ssh et de les transmettre à votre place à chaque fois que ssh les demande. A la demande de ssh-add, vous devrez taper le mot de passe qui protège vos clefs ssh.

 /home/klix>eval `ssh-agent`                  #attention aux back-quotes
 /home/klix>ssh-add
 Enter passphrase for /home/klix/.ssh/id_rsa:
 Identity added: /home/klix/.ssh/id_rsa

Maintenant, il vous suffit de lancer la commande suivante :

 /home/klix>ssh apollo
 Connected to proxy-server:3128
 Starting tunnel
 Last login Tue Mar 16:39:00 2001 from 123.45.67.89
 apollo:/home/klix>

La commande peut prendre quelque temps. Il faut que le tunnel se mette en place et que la connexion s'établisse avec le serveur sshd distant sur la machine apollo (TCP/IP 123.213.165.77). La communication est de plus cryptée par ssh. Vous pouvez également utiliser sftp pour passer a travers le proxy http.

Reverse tunneling

Voir NotesSSH