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
|