<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le blog de Michauko &#187; ssh</title>
	<atom:link href="http://michauko.org/blog/tag/ssh/feed/" rel="self" type="application/rss+xml" />
	<link>http://michauko.org/blog</link>
	<description>Si tu ne comprends pas le titre de l&#039;article, passe ton chemin</description>
	<lastBuildDate>Mon, 16 Apr 2012 10:10:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>scp et SSH en PHP</title>
		<link>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/</link>
		<comments>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 11:36:49 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh2.so]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1244</guid>
		<description><![CDATA[Hop, J&#8217;ai eu besoin de faire un script un peu évolué pour jouer avec une base Oracle et des fichiers à ramener depuis un serveur distant. Bref, j&#8217;ai pensé au PHP pour faire un truc assez fin, mêlant Oracle et des transferts de fichiers en &#171;&#160;scp&#160;&#187;. Seule difficulté, installer le module SSH pour PHP. Ce [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,<br />
J&#8217;ai eu besoin de faire un script un peu évolué pour jouer avec une base Oracle et des fichiers à ramener depuis un serveur distant.<br />
Bref, j&#8217;ai pensé au PHP pour faire un truc assez fin, mêlant Oracle et des transferts de fichiers en &laquo;&nbsp;scp&nbsp;&raquo;.</p>
<p>Seule difficulté, installer le module SSH pour PHP. Ce que je décris ici.<br />
Ensuite, les bouts de codes exemple sont sur <a href="http://www.php.net/manual/fr/book.ssh2.php" target="_blank">la doc de PHP</a>.</p>
<h1>Côté serveur Debian</h1>
<p>J&#8217;étais parti de l&#8217;installation PECL directement, ça plante, il manquait des petits bouts côté Debian<span id="more-1244"></span>. Je montre pour l&#8217;exemple :</p>
<pre>srv:~# pecl install ssh2 "channel://pecl.php.net/ssh2-0.11.2"
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.11.2, stability "beta", use "channel://pecl.php.net/ssh2-0.11.2" to install
downloading ssh2-0.11.2.tgz ...
Starting to download ssh2-0.11.2.tgz (22,740 bytes)
........done: 22,740 bytes
[...]
checking for ssh2 files in default path... not found
configure: error: The required libssh2 library was not found.  You can obtain that package from http://sourceforge.net/projects/libssh2/
ERROR: `/tmp/pear/temp/ssh2/configure --with-ssh2' failed
</pre>
<p>Donc, il faut d&#8217;abord installer tout ça :</p>
<pre>srv:~# apt-cache search libssh2
libnet-ssh2-perl - Perl module for the SSH 2 protocol
libssh2-1-dbg - SSH2 client-side library (debug package)
libssh2-1-dev - SSH2 client-side library (development headers)
libssh2-1 - SSH2 client-side library
libssh2-php - PHP Bindings for libssh2
python-libssh2 - Python binding for libssh2 library

srv:~# aptitude install libssh2-1-dev libssh2-php</pre>
<h1>Installation du module avec PECL</h1>
<p>On peut donc enfin installer le module :</p>
<pre>srv:~# pecl install ssh2 "channel://pecl.php.net/ssh2-0.11.2"
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.11.2, stability "beta", use "channel://pecl.php.net/ssh2-0.11.2" to install
[...]
Build process completed successfully
Installing '/usr/lib/php5/20090626+lfs/ssh2.so'
install ok: channel://pecl.php.net/ssh2-0.11.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=ssh2.so" to php.ini
aladdin:~# grep extension /etc/php5 -r
/etc/php5/conf.d/gd.ini:extension=gd.so
/etc/php5/conf.d/ssh2.ini:extension=ssh2.so
/etc/php5/conf.d/snmp.ini:extension=snmp.so</pre>
<p>L&#8217;installation se charge toute seule d&#8217;activer l&#8217;extension ssh2.so dans les fichiers de conf PHP.</p>
<h1>Exemple de code d&#8217;un transfert</h1>
<pre>define ("SSH_KEY","/path/to/.ssh/id_dsa");
define ("SSH_FINGERPRINT","BXXXXXXXXXXXXXXXXXXXXXX81"); # à récupérer la première fois
...
$ssh = ssh2_connect(SSH_SERVER,SSH_PORT);
if (ssh2_fingerprint ($ssh,SSH2_FINGERPRINT_MD5) != SSH_FINGERPRINT) { # bien penser à contrôler le fingerprint ; c'est dommage de s'en priver !
  echo "c'est mal";
}
if (!ssh2_auth_pubkey_file($ssh, SSH_LOGIN, SSH_KEY.".pub", SSH_KEY, '')) {
  echo "authentif par clef ratée";
}
...
if (@ssh2_scp_recv ($ssh, $fich_src, $fich_dest)) {
  echo "transfert OK";
}
...
</pre>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMESXi 4.0, accès root et authentification par clef SSH</title>
		<link>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/</link>
		<comments>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 08:42:36 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[datastore]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[unsupported]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1151</guid>
		<description><![CDATA[Hello, Ce qui suit était valable jusqu&#8217;à ESXi 4.0. Je n&#8217;ai pas regardé en 4.1 pour l&#8217;instant. Vous me direz (ou moi plus tard). Cet article explique comment activer le serveur SSH sur un hôte VMWare ESXi 4.0 et comment mettre en place un &#171;&#160;authorized_keys&#160;&#187; durable (car le home du root saute à chaque reboot). [...]]]></description>
			<content:encoded><![CDATA[<p>Hello,</p>
<p>Ce qui suit était valable jusqu&#8217;à ESXi 4.0. Je n&#8217;ai pas regardé en 4.1 pour l&#8217;instant. Vous me direz (ou moi plus tard).<br />
Cet article explique comment activer le serveur SSH sur un hôte VMWare ESXi 4.0 et comment mettre en place un &laquo;&nbsp;authorized_keys&nbsp;&raquo; durable (car le home du root saute à chaque reboot). Je présente aussi rapidement quelques trucs indispensables pour se promener dans l&#8217;hôte.<br />
L&#8217;intérêt de la chose est de pouvoir lancer directement certaines commandes depuis un serveur ESXi via une session SSH et aussi, pour l&#8217;authentification par clef, de scripter certaines choses. Par exemple l&#8217;arrêt / copie des fichiers vmdk / relance de serveurs pour automatiser des full backup offline.</p>
<p>Let&#8217;s go!<span id="more-1151"></span></p>
<h1>Activation du SSH</h1>
<p>Ce n&#8217;est pas supporté par VMWare, mais ça existe quand même. On se demande bien pourquoi <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Sur la console de votre hôte, vous appuyez sur ALT-F1 pour passer sur une session console &laquo;&nbsp;habituelle&nbsp;&raquo; du monde Linux.<br />
Là, en aveugle (pas d&#8217;écho à l&#8217;écran), vous tapez &laquo;&nbsp;unsupported&nbsp;&raquo;, sans les guillemets bien sûr et validez par la touche &laquo;&nbsp;Entrée&nbsp;&raquo;.<br />
Vous obtiendrez une demande de mot de passe, le pass de votre compte root.<br />
Ca y est, vous êtes connecté à la console.<br />
Vous pouvez alors aller éditer le fichier <code>/etc/inetd.conf</code>, avec l&#8217;éditeur &laquo;&nbsp;<code>vi</code>&nbsp;&raquo; et décommenter la ligne SSH en IPv4.<br />
Ensuite, soit vous redémarrez le serveur, soit vous redémarrez <code>inetd</code>.<br />
Testez votre connexion SSH depuis un autre ordi, histoire de valider.</p>
<h1>Et maintenant ?</h1>
<p>Super, je peux faire du SSH sur le serveur, mais pour quoi faire ?<br />
Personnellement, il m&#8217;arrive de déplacer des machines virtuelles d&#8217;un serveur à l&#8217;autre, dont les fichiers vmdk ne sont pas sur un SAN partagé. Plutôt que de super-galérer avec le &laquo;&nbsp;vSphere Client&nbsp;&raquo; -> &laquo;&nbsp;Browse datastore&nbsp;&raquo; -> etc, je préfère faire faire quelques &laquo;&nbsp;scp&nbsp;&raquo; par exemple.<br />
Et surtout, vous pouvez faire tout ce que permet &laquo;&nbsp;vSphere Client&nbsp;&raquo; mais en mode texte. Bref, parfois, c&#8217;est pratique.</p>
<h2>vim-cmd</h2>
<p>L&#8217;outil essentiel est la command &laquo;&nbsp;<code>vim-cmd</code>&nbsp;&raquo; (rien à voir avec &laquo;&nbsp;VIm&nbsp;&raquo;), documentez-vous dessus.<br />
Commencez par taper &laquo;&nbsp;<code>vim-cmd</code>&nbsp;&raquo; tout seul, puis &laquo;&nbsp;<code>vim-cmd vmsvc/</code>&nbsp;&raquo; par exemple. Les noms de fonctions sont souvent éloquents.</p>
<p>Vous pourrez par exemple :</p>
<ul>
<li>
obtenir la liste des VM : vim-cmd vmsvc/getallvms
</li>
<li>
obtenir l&#8217;état d&#8217;une VM : vim-cmd vmsvc/power.getstate &lt;ID&gt;
</li>
<li>
en arrêter proprement une (pas &laquo;&nbsp;électriquement&nbsp;&raquo;) : vim-cmd vmsvc/power.off &lt;ID&gt;
</li>
<li>
en rallumer une : vim-cmd vmsvc/power.on &lt;ID&gt;
</li>
</ul>
<p>etc&#8230;</p>
<h2>Stockage des machines virtuelles</h2>
<p>Dans <code>/vmfs/volumes/</code>, vous trouverez les noms de code de vos &laquo;&nbsp;datastores&nbsp;&raquo; et des liens symboliques pointant vers ces noms pourris, histoire de s&#8217;y retrouver. Ces liens sont les noms que vous avez affecté via &laquo;&nbsp;vSphere Client&nbsp;&raquo;.<br />
De là, vous allez vite retrouver vos fichiers vmdk &#038; co.</p>
<h1>authorized_keys</h1>
<p>Si vous avez besoin de stocker dans le home du root (qui est &laquo;&nbsp;/&nbsp;&raquo; et non un habituel &laquo;&nbsp;/root&nbsp;&raquo;) un fichier &laquo;&nbsp;~/.ssh/authorized_keys&nbsp;&raquo;, sachez qu&#8217;il saute à chaque reboot.<br />
Ce que j&#8217;ai fait pour contrer celà, c&#8217;est d&#8217;ajouter au script &laquo;&nbsp;/etc/rc.local&nbsp;&raquo; la recopie de ce fichier stocké au préalable dans un &laquo;&nbsp;datastore&nbsp;&raquo; local.<br />
Ca donne :</p>
<pre>~ # tail /etc/rc.local
         if [ -f $filename ] &#038;&#038; [ -x $filename ]; then
            log "running $filename"
            $filename
         fi
      done
fi

<strong>mkdir /.ssh
cd /vmfs/volumes/DataStoreLocal/pour_reboot/.ssh/
cp authorized_keys /.ssh/</strong></pre>
<p>J&#8217;avais d&#8217;abord créé ce fameux &laquo;&nbsp;pour_reboot&nbsp;&raquo; + le répertoire &laquo;&nbsp;.ssh/&nbsp;&raquo; + le fichier &laquo;&nbsp;authorized_keys&nbsp;&raquo; dans le datastore qui va bien (ce n&#8217;est pas son nom d&#8217;origine, c&#8217;est plutôt &laquo;&nbsp;datastore1&#8243; sur une machine fraîchement installée).</p>
<p>Et voilà, avec un accès SSH, un hôte ESXi ressemble quand même plus à quelque chose, non ? <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SFTP, chroot et pas de SSH : bloquer un utilisateur dans un répertoire</title>
		<link>http://michauko.org/blog/2010/09/27/sftp-chroot-et-pas-de-ssh-bloquer-un-utilisateur-dans-un-repertoire/</link>
		<comments>http://michauko.org/blog/2010/09/27/sftp-chroot-et-pas-de-ssh-bloquer-un-utilisateur-dans-un-repertoire/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 08:15:21 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[rssh]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1099</guid>
		<description><![CDATA[Salut, Un petit article sur ce sujet récurrent car il y a plein de méthodes, dont une assez simple, mais avec 2/3 points de paramétrage précis. Le but est de permettre à un client/fournisseur d&#8217;envoyer/récupérer des fichiers sur un serveur, en SFTP, sans pour autant lui donner accès en SSH (exécuter des commandes) et sans [...]]]></description>
			<content:encoded><![CDATA[<p>Salut,<br />
Un petit article sur ce sujet récurrent car il y a plein de méthodes, dont une assez simple, mais avec 2/3 points de paramétrage précis.<br />
Le but est de permettre à un client/fournisseur d&#8217;envoyer/récupérer des fichiers sur un serveur, en SFTP, sans pour autant lui donner accès en SSH (exécuter des commandes) et sans voir autre part que son &laquo;&nbsp;home&nbsp;&raquo;.<br />
Le tout sur un serveur SSH déjà monté et par ailleurs utilisé pour du SSH normal en interne, avec du SFTP normal aussi.</p>
<p>Il y a 3 méthodes courantes pour commencer à jouer avec les chroot ssh/sftp :</p>
<ul>
<li>
Héberger un serveur SSH en chroot normal : c&#8217;est chiant. Créer un &laquo;&nbsp;home&nbsp;&raquo;, reproduire un minimum d&#8217;arborescence standard, d&#8217;utilisateurs etc.
</li>
<li>
Utiliser rssh comme shell alternatif, c&#8217;est un shell qui limite l&#8217;utilisateur à du SFTP, SCP, CVS, RSYNC etc. On choisit ce qu&#8217;on veut tolérer. Mais, l&#8217;utilisateur peut quand même se promener dans le système (tout &laquo;&nbsp;/&nbsp;&raquo;).
</li>
<li>
Enfin, ce que je vais décrire : utiliser la fonctionnalité de &laquo;&nbsp;chroot&nbsp;&raquo; intégrée aux serveurs SSH (serveur ssh >= 4.8, donc n&#8217;importe quel SSH d&#8217;une Debian stable de nos jours). On va simplement brider quelques comptes et mettre quelques permissions bien senties.
</li>
</ul>
<p><span id="more-1099"></span></p>
<h1>Adaptation d&#8217;un utilisateur</h1>
<p>Le mieux est de prévoir large : on risque d&#8217;avoir plusieurs clients/fournisseurs qui voudront accéder.<br />
On va donc créer un groupe des utilisateurs SFTP seulement, nommé &laquo;&nbsp;sftpusers&nbsp;&raquo;.<br />
Je crée un utilisateur pour mon client, nommé xfer1, en changeant son home :</p>
<pre>xfer1:x:1011:1012:Transfert client1,,,:/transferts_partenaires/xfer1/:bin/bash</pre>
<p>Notez que le groupe 1012 est le groupe &laquo;&nbsp;sftpusers&nbsp;&raquo; :</p>
<pre>$ id xfer1
uid=1011(xfer1) gid=1012(sftpusers) groupes=1012(sftpusers)</pre>
<h1>Création du répertoire d&#8217;échange, permissions</h1>
<p>On crée l&#8217;arborescence qui va servir de home bidon à tout ces utilisateurs :</p>
<pre>$ mkdir --parents /transferts_partenaires/xfer1/
$ chown -R root:sftpusers /transferts_partenaires/
$ chmod -R 750 /transferts_partenaires/</pre>
<p>Les permissions ci-dessus sont hyper importantes. Le serveur SFTP refusera la connexion si le home de ces utilisateurs n&#8217;est pas en <strong>écriture uniquement pour le root </strong>! Donc oui, en l&#8217;état, notre utilisateur <code>xfer1:sftpusers</code> ne peut pas écrire dans son home. Il pourra lire, ce qui peut être suffisant si vous lui mettez simplement des fichiers à disposition. Mais pour écrire, il faudra créer un sous-répertoire, genre &laquo;&nbsp;upload&nbsp;&raquo;.</p>
<pre>mkdir /transferts_partenaires/xfer1/upload/
chown xfer1:sftpusers /transferts_partenaires/xfer1/upload/
chmod 700 /transferts_partenaires/xfer1/upload/</pre>
<h1>Déclaration du compte en SFTP uniquement</h1>
<p>Enfin, on paramètre le serveur SSH comme suit. Modifiez votre fichier <code>/etc/ssh/sshd_config</code> :</p>
<pre># param par défaut, on change : Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem     sftp   internal-sftp -f AUTH -l VERBOSE

# plus loin...
Match Group sftpusers
        ChrootDirectory /transferts_partenaires/%u
        ForceCommand internal-sftp
        AllowTcpForwarding no
        GatewayPorts no
        X11Forwarding no</pre>
<p>A noter que les AllowUsers/DenyUsers s&#8217;appliquent toujours. L&#8217;utilisateur xfer1 &#8211; ou plutôt les utilisateurs du groupe sftpusers &#8211; doivent être autorisés d&#8217;une manière ou d&#8217;une autre.<br />
A noter aussi la beauté du geste avec le &laquo;&nbsp;%u&nbsp;&raquo; pour indiquer le nom de l&#8217;utilisateur.</p>
<p>Ensuite vous recharger le serveur SSH et testez les connexions SFTP et SSH-qui-passent-pas, sans oublier la distinction lecture/écriture.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/09/27/sftp-chroot-et-pas-de-ssh-bloquer-un-utilisateur-dans-un-repertoire/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Tunnels TCP via SSH, putty etc</title>
		<link>http://michauko.org/blog/2009/02/23/tunnels-tcp-via-ssh-putty-etc/</link>
		<comments>http://michauko.org/blog/2009/02/23/tunnels-tcp-via-ssh-putty-etc/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 08:01:53 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tunnels]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=181</guid>
		<description><![CDATA[Salut, Je reprends cette doc écrite il y a 5 ans et anciennement disponible en bon gros HTML-vi-powered dispo ici : http://michauko.org/blog/2009/02/23/tunnels-tcp-via-ssh-putty-etc/ Les photos d&#8217;écrans datent de l&#8217;époque. Mais comme le concept n&#8217;a pas bougé&#8230;. et l&#8217;interface de PuTTY très peu aussi&#8230;. Let&#8217;s go En relisant l&#8217;article, je vois que c&#8217;était vraiment vulgarisé pour être [...]]]></description>
			<content:encoded><![CDATA[<p>Salut,<br />
Je reprends cette doc écrite il y a 5 ans et anciennement disponible en bon gros HTML-vi-powered dispo ici : http://michauko.org/blog/2009/02/23/tunnels-tcp-via-ssh-putty-etc/<br />
Les photos d&#8217;écrans datent de l&#8217;époque. Mais comme le concept n&#8217;a pas bougé&#8230;. et l&#8217;interface de PuTTY très peu aussi&#8230;.</p>
<p>Let&#8217;s go<br />
<em><strong>En relisant l&#8217;article, je vois que c&#8217;était vraiment vulgarisé pour être accessible au plus grand nombre, pardonnez donc les imprécisions techniques et le baratin simplifié &#8211; MERCI</strong></em><br />
<P>&#8211;<P><br />
J&#8217;ai écrit ce document pour 2 raisons. La première est que j&#8217;en ai marre d&#8217;expliquer sans cesse à mes amis cette méthode, la deuxième est que c&#8217;est vraiment une méthode très pratique, puissante et qui n&#8217;a que quelques limitations (et encore – voir chapitre à venir : VPN sur SSH).</p>
<h1>1. Avez-vous besoin de SSH au boulot ?</h1>
<p>Vous êtes 8h par jour au boulot et le proxy chargé de la sécurité de l&#8217;entreprise se charge surtout de vous bloquer quelques sites web et quelques protocoles réseaux à priori non professionnels. En gros, il vous emmerde à longueur de temps et vous aimeriez pouvoir faire les choses suivantes depuis votre boulot :</p>
<ul>
<li>Lire vos mails en POP, IMAP (par un client mail classique plutôt que via le web et l&#8217;interface nullissime de votre fournisseur).</li>
<li>Utiliser Jabber, ICQ, MSN (ou autre protocole) depuis le boulot pour pouvoir rester en contact avec belle-maman.</li>
<li>Prendre le contrôle à distance (VNC, pcAnywhere etc) de votre PC perso avec sa ligne ADSL pour faire je ne sais quoi. D&#8217;autant plus que des outils comme VNC ne gèrent tout simplement PAS les proxys.</li>
<li>Suivre les résultats du football ou consulter un site d&#8217;actualités – en général le proxy bloque largement les sites foot, jeux, facebook et bien d&#8217;autres.</li>
<li>et plein d&#8217;autres choses encore&#8230;</li>
</ul>
<p>Dans ce document, je présenterai le concept ainsi que la mise en oeuvre de la solution (sous Linux ou Windows).</p>
<h1>2. Principe général</h1>
<p>SSH est un outil qui permet de se connecter à une machine distante en mode texte. Sous Linux, on accède à un shell, sous Windows, on pourra voir ça comme l&#8217;accès à une fenêtre DOS, à priori pas très utile, certes. Ca ressemble donc de loin à une connexion telnet, sauf que c&#8217;est laaaaargement plus sécurisé (je n&#8217;en débattrai par ici mais vous pouvez me croire sur parole) et beaucoup plus puissant.<br />
SSH permet notamment de faire du transfert de fichiers (SFTP) et surtout, des tunnels de communication, dans les deux sens (vous comprendrez plus tard). Un tunnel va servir à encapsuler (capturer) des flux réseaux entre le SSH client (votre PC en entreprise avec accès web restreints qu&#8217;on veut contourner) et votre serveur SSH (votre PC à la maison avec ADSL branché 24/24).</p>
<p>Tout se résume à ça : le client SSH établit une connexion avec le serveur SSH à travers le proxy en utilisant une connexion autorisée par le proxy (méthode CONNECT vers un port autorisé). Ensuite, grâce à ça, des tunnels vous permettront de faire passer presque n&#8217;importe quoi à travers le proxy (voir chapitre 4 sur les limitations de ce système).</p>
<p>Le client SSH que j&#8217;utilise est putty (premier lien sur google), c&#8217;est un client libre, gratuit etc, qui permet de faire du telnet, du ssh et surtout d&#8217;utiliser les fonctionnalités de ssh, les tunnels par exemple. Il sait aussi se connecter à travers un proxy.</p>
<h1>3. Mise en place</h1>
<h2>3.1. Côté serveur SSH</h2>
<p>Chez vous, il faut d&#8217;abord installer un serveur SSH.</p>
<h3>3.1.1. Installation</h3>
<p>Sous Linux, vous trouverez forcemment un paquet correspondant à votre distribution. Exemple sous Debian, tapez « apt-get install ssh » et ça devrait le faire.</p>
<p>Sous Windows, c&#8217;est moins simple. Je ne connais pas d&#8217;implémentation libre directement fonctionnelle sous Windows. Et comme vous n&#8217;allez quand même pas payer la version payante de www.ssh.com, vous devrez utiliser www.cygwin.com pour installer un « environnement Linux dans votre Windows ». Cet environnement comprend ensuite la plupart des outils Linux, dont OpenSSH bien sûr. Deux options (au moins) s&#8217;offrent à vous :</p>
<ul>
<li>Installer cygwin de manière classique avec ce qu&#8217;il faut, notamment le paquet ssh (il vous faudra lire un peu de doc à priori).</li>
<li>Utiliser le projet sshwindows qui propose un programme d&#8217;installation global comprenant un cygwin minimaliste et sshd associé. Je n&#8217;ai pas testé personnellement cette solution.</li>
</ul>
<p>Présentation barbare de l&#8217;installation de cygwin : dans les grandes lignes, vous téléchargez le setup.exe puis vous choisissez un miroir de téléchargement, vous installez le minimum vital (par défaut je crois) et vérifiez bien que le paquet ssh est inclus. Au final, vous obtenez une sorte de raccourci façon « fenêtre DOS », sauf que vous êtes dans un environnement Linux et disposez de sa panoplie d&#8217;outils en ligne de commande et même graphique si vous cherchez bien (pour peu que vous ayez installé les paquets qu&#8217;il faut).</p>
<h3>3.1.2. Génération des clefs</h3>
<p>Si vous ne connaissez pas le principe d&#8217;authentification par clefs de SSH, sachez juste que vous devez générer une paire de clefs cryptées utilisées pour la communication entre le serveur et les clients. Même si dans ce document je ne vais pas détailler l&#8217;authentification par clefs, mais juste par mot de passe, cette paire de clefs est nécessaire pour l&#8217;identification du serveur et pour les premières étapes de l&#8217;établissement de la connexion (par mot de passe).<br />
Si vous avez installé SSH sous Debian, le programme d&#8217;installation génère automatiquiment les clefs, pour les solutions, je ne sais pas. Sous cygwin par exemple, vous devrez donc générer ces clefs via la commande « ssh-keygen -t dsa ». Vous pourrez voir ces clefs dans « /etc/ssh », les fichiers sont ssh_host_dsa_key*.</p>
<h3>3.1.3. Etape supplémentaire pour Cygwin</h3>
<p>Un détail sous cygwin (encoooooore), il faut que vous lisiez les docs pour savoir comment lancer le serveur SSH en tant que service Windows plutôt qu&#8217;à la main le matin en partant au boulot&#8230; (cherchez des infos sur le programme cygrunsrv.exe). Pour la version « packagée » par le projet sshwindows, je ne sais pas, lisez la doc.</p>
<p>Sous Linux, ce sera forcemment fait automatiquement.</p>
<h3>3.1.4. Changement du port du serveur SSH</h3>
<p>SSH tourne sur le port 22 par défaut et vous pouvez être quasimment sûr que le proxy du boulot bloque ce port. Donc vous ne pourrez pas atteindre votre serveur depuis chez vous. Ajoutez donc dans le fichier de configuration de sshd (/etc/ssh/sshd_config) une ligne « Port 443 » après la ligne « Port 22 » ou remplacez cette dernière. Redémarrez le service. On choisit le port 443 car c&#8217;est le port https par défaut et le proxy du boulot tolèrera forcemment ce port (au pire, prenez le port 80, http). De plus, https et SSH présentent des similitudes (la couche SSL) et donc utiliser le port 443 a l&#8217;avantage d&#8217;être plus discret (voir chapitre 4.2.).<br />
Si votre firewall le tolère, vous pouvez aussi faire un forward du port 443 vers le 22 en ne laissant que la ligne « Port 22 » dans sshd_config.</p>
<h3>3.1.5. Votre firewall</h3>
<p>Enfin, vous avez certainement chez vous un firewall, n&#8217;oubliez pas d&#8217;ouvrir le port 443 ou 22 (voir chapitre précédent).<br />
Vous avez très probablement aussi une adresse IP dynamique et donc il faut que vous vous trouviez un nom de domaine (essayez www.dyndns.org, ils ont un service gratuit et vous aurez un nom du style chezmoi.dyndns.org mis à jour à chaque reconnexion de votre ADSL). Sinon, vous devrez récupérer votre adresse IP tous les matins et priez pour que l&#8217;ADSL ne tombe pas auquel cas vous risqueriez de changer d&#8217;IP.</p>
<p>Je suppose maintenant que votre serveur est lancé, accessible depuis l&#8217;extérieur et qu&#8217;il fonctionne correctement.</p>
<h2>3.2. Côté client SSH</h2>
<h3>3.2.1. Récupération des paramètres proxy</h3>
<p>Pour les utilisateurs d&#8217;Internet Explorer, allez dans Outils -> Options Internet -> Connexions -> Paramètres réseaux. Vous aurez 2 possibilités, soit l&#8217;adresse et le port sont directement écrit :</p>
<p><img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel1.png" alt="tunnel1" title="tunnel1" width="384" height="361" class="alignnone size-full wp-image-194" /></p>
<p>Soit votre entreprise utilise un script d&#8217;autoconfiguration :</p>
<p><img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel2.png" alt="tunnel2" title="tunnel2" width="384" height="361" class="alignnone size-full wp-image-196" /></p>
<p>Dans ce dernier cas, téléchargez ce script en recopiant l&#8217;adresse dans votre navigateur. Ouvrez-le, c&#8217;est un fichier texte. C&#8217;est simple à comprendre et en général, les dernières lignes vous donnent le proxy qui permet d&#8217;atteindre les sites extérieurs (Internet). La fin ressemble à quelque chose comme « PROXY host:port ».</p>
<p>Si vous utilisez un autre navigateur (je l&#8217;espère pour vous <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , vous saurez sûrement où trouver ces informations.</p>
<h3>3.2.2. Installation de putty (client SSH)</h3>
<p>Téléchargez putty. Il n&#8217;y a pas d&#8217;installation, pas besoin d&#8217;être admin de son poste. Vous n&#8217;avez besoin que de putty.exe sinon prenez le zip qui contient tous les binaires. Le paramétrage se fait comme suit :<br />
<img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel3.png" alt="tunnel3" title="tunnel3" width="426" height="435" class="alignnone size-full wp-image-197" /></p>
<p>Vous saisissez dans le menu « Session » l&#8217;adresse du PC chez vous (IP ou DNS), précisez le protocole SSH et modifiez le port où tourne le serveur SSH (443 à priori – voir chapitres précédents).</p>
<p><img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel4.png" alt="tunnel4" title="tunnel4" width="426" height="435" class="alignnone size-full wp-image-198" /></p>
<p>Dans le menu « Connection », activez l&#8217;envoi de paquets vides réguliers, toutes les 10 secondes par exemple. La connexion SSH se faisant via la méthode CONNECT (comme pour du https), le proxy risque fort de la couper régulièrement si aucun trafic n&#8217;est généré.<br />
<img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel5.png" alt="tunnel5" title="tunnel5" width="426" height="435" class="alignnone size-full wp-image-200" /></p>
<p>Dans le menu « Proxy », vous indiquez le type de proxy, à priori HTTP, son adresse, son port et l&#8217;utilisateur/mot de passe si besoin. La ligne « telnet command » représente en gros le début de la communication entre putty et le proxy pour permettre la connexion au serveur distant (le PC chez vous). Tentez la ligne suivante : « connect %host %port HTTP/1.1\nHost: %host » si la ligne par défaut ne fonctionne pas.</p>
<p><img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel6.png" alt="tunnel6" title="tunnel6" width="426" height="435" class="alignnone size-full wp-image-201" /></p>
<p>Enfin, dans le menu « SSH », vous précisez que vous utilisez le protocole en version 2 et activez la compression – c&#8217;est toujours ça de gagné.</p>
<p>Retournez dans le menu « Session », donnez un nom à votre session et faites « Save » à nouveau. Puis « Open ».</p>
<h3>3.2.3. Le moment de vérité</h3>
<p>Faites « Open », si tout va bien, vous obtiendrez un écran du genre :<br />
<img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel7.png" alt="tunnel7" title="tunnel7" width="278" height="106" class="alignnone size-medium wp-image-203" /></p>
<p>Connectez vous et ça roule. Dans les autres cas, vérifiez bien les informations saisies et éventuellement changez le type de proxy. Parmi les 25 entreprises que j&#8217;ai pu visiter (grandes multinationales comprises), seules 2 ont refusé cette connexion, la première car le proxy était un logiciel merdico-archaïque de Microsoft qui avait déjà du mal à fonctionner normalement avec IE, la deuxième car le proxy était buggé et avait l&#8217;air de ne pas respecter le protocole « normal » entre putty et le serveur ssh (d&#8217;après les traces que j&#8217;ai analysées, le serveur SSH était atteint puis tout partait n&#8217;importe comment).</p>
<p>A ce niveau là, si la connexion est établie et que vous pouvez accéder à votre machine, c&#8217;est banco, vous pourrez « tuyauter » n&#8217;importe quoi via SSH <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>3.3. Les tunnels</h2>
<h3>3.3.1. Créer un port mapping</h3>
<p>Dans le menu « Tunnels », créez un tunnel vers vos serveurs de messagerie (ATTENTION, lisez le chapitre 4.1.3 à propos du forward de messagerie) :</p>
<p><img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel8.png" alt="tunnel8" title="tunnel8" width="426" height="435" class="alignnone size-full wp-image-205" /></p>
<p>Cette fois-ci, lorsque la fenêtre putty sera ouverte et que vous serez signé sur le serveur SSH, il y aura eu création d&#8217;un port mapping du port local 10110 du poste client vers le port 110 du serveur POP de votre provider (le tout via le relai SSH <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Idem pour les ports 10025/smtp:25. J&#8217;ai choisi des numéros de ports locaux (10110 et 10025) différents des vrais ports notamment pour la compréhension. Rien (ou presque) ne vous empêcherait de mapper les port 25 et 110 vers les ports 25 et 110 des serveurs POP et SMTP de monprovider.com.</p>
<p>Ca veut dire que si un programme de messagerie (mozilla, thunderbird, outlook express, lotus notes etc) s&#8217;adresse à votre propre machine (localhost) sur le port 10025, c&#8217;est bien le serveur SMTP de monprovider.com:25 qui répondra. Idem pour le port 10110/110, c&#8217;est le serveur POP qui répondra. A partir de là, configurez votre client mail en indiquant que les serveurs POP et SMTP de monprovider.com sont respectivement localhost (sur port 10110) et localhost (sur port 10025).<br />
Lorsque le client mail fera une requête, c&#8217;est putty qui interceptera la communication et dira au serveur d&#8217;effectuer la requête à partir de l&#8217;autre bout du tunnel vers le serveur:port précisé. Et voilà ! (j&#8217;espère que c&#8217;est clair <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Attention : vérifiez bien que votre client mail n&#8217;utilise aucun proxy pour les connexions locales ! (exemple : « outlook express » utilise la configuration de IE, veillez bien à cocher dans IE la case qui précise de ne « pas utiliser de proxy pour les connexions locales », ça devrait être fait par défaut).</p>
<p>Avec un beau schéma, ça donne ça :<br />
<img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel9.png" alt="tunnel9" title="tunnel9" width="710" height="476" class="alignnone size-full wp-image-209" /><br />
Maintenant que vous savez faire ça, vous pouvez mapper n&#8217;importe quoi et vous coimprendrez rapidement que le port mapping n&#8217;est pas la solution pour tous les problèmes. Exemple, si vous voulez faire de l&#8217;IRC, le serveur que vous joindrez ne sera pas toujours le même suivant les réseaux que vous voulez utiliser.</p>
<h3>3.3.2. Tunnel dynamique (pour ICQ par exemple)</h3>
<p>La limitation des port mapping apparaît rapidement car il faut définir absolument toutes les connexions dont vous avez besoin, ce qui peut être très lourd. Imaginez que vous vouliez mapper certains sites web interdits, comme www.pleindetrucsinterdits.com. Vous n&#8217;avez qu&#8217;à créer un port mapping du style « localhost:12345 -> www.pleindetrucsinterdits.com:80 ». Ca fonctionne – pas dans tous les cas à cause des « virtual hosts » (Merci Toine) &#8211; mais il ne faut pas avoir 50 sites à mapper sinon c&#8217;est l&#8217;enfer.</p>
<p>Une autre limitation est que vous ne pouvez tout simplement pas de cette manière vous connecter à certains services comme ICQ par exemple : en effet, vous pourriez faire un port mapping vers le serveur d&#8217;authentification login.icq.com:5190 par exemple, mais le reste de la communication ne se fera pas car il y a ensuite tout un tas de ports dynamiques alloués qui entrent en jeu. Impossible donc.</p>
<p>La solution est le mapping dynamique. En gros, vous créez un port d&#8217;écoute (port 1080 dans la suite du texte) qui se charge de prendre toute trame réseau qui rentre telle quelle et de la « faire exécuter » depuis l&#8217;autre bout du tunnel. Ca ressemble à un proxy n&#8217;est-ce pas ? En effet, c&#8217;est bien un service que l&#8217;on utilise pour contacter n&#8217;importe quel site/port inaccessible depuis le réseau où l&#8217;on est. C&#8217;est pas beau ça ?<br />
Ca veut notamment dire que dans l&#8217;application qui doit utiliser ce « proxy », vous devez préciser que le nouveau proxy est localhost:1080 et non pas le proxy de l&#8217;entreprise.</p>
<p>Dans putty, créez un tunnel « Dynamic » sur le port 1080 par exemple :</p>
<p><img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel10.png" alt="tunnel10" title="tunnel10" width="282" height="165" class="alignnone size-full wp-image-211" /></p>
<p>Ca donne ça :</p>
<p><img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel11.png" alt="tunnel11" title="tunnel11" width="275" height="125" class="alignnone size-full wp-image-212" /></p>
<p>Et globalement, on peut donc schématiser ça comme ça :</p>
<p><img src="http://michauko.org/blog/wp-content/uploads/2009/02/tunnel12.png" alt="tunnel12" title="tunnel12" width="713" height="482" class="alignnone size-full wp-image-213" /></p>
<p>ATTENTION : une fois ce système mis en place, n&#8217;oubliez pas de dire à l&#8217;application concernée que le proxy pour sortir n&#8217;est plus le proxy de l&#8217;entreprise mais le « proxy » de type SOCKS 4 (si vous avez besoin de le préciser) situé sur localhost, port 1080 ! Pigé ?</p>
<p><strong>(MAJ 2009)</strong><br />
Si vous n&#8217;arrivez pas à faire utiliser ce proxy à votre navigateur, pourquoi ne pas installer un vrai proxy sur votre serveur relai et le mapper via un tunnel normal ? (un &laquo;&nbsp;squid&nbsp;&raquo; local à votre serveur relai fera l&#8217;affaire)</p>
<h3>3.3.3. Tunnel remote ? Ou comment exporter un serveur local (interne) vers l&#8217;extérieur</h3>
<p>Enfin, sur l&#8217;interface de putty, vous avez peut-être remarqué une fonctionnalité inexplorée jusqu&#8217;à présent : les tunnels « remote », par opposition aux tunnels « locaux ». Ca permet non pas de mapper un port local vers un couple machine/port distant mais de faire l&#8217;inverse : mapper un couple machine/port local vers un port distant (sur la machine PC ADSL). Vous ne voyez pas à quoi ça peut servir ? Lisez la suite :</p>
<p>Attention : c&#8217;est mal de faire ça <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  car ça vous permet de rendre accessible un serveur d&#8217;Intranet (par exemple) à partir de votre machine extérieure (PC ADSL) et donc potentiellement accessible à tout le monde depuis le web si vous ne faites pas attention à votre configuration réseau !</p>
<h1>4. Compléments d&#8217;informations</h1>
<h2>4.1. Limitations</h2>
<h3>4.1.1. Bande passante</h3>
<p>Gardez à l&#8217;esprit que vous faites tout passer par la machine chez vous, certainement plus lente en débit que l&#8217;accès web de l&#8217;entreprise notamment pour l&#8217;upload (le retour de communication de votre PC ADSL vers putty). Donc si vous mappez des sites web interdits, ne vous étonnez pas si ça raaaaame, surtout si votre client favori de peer-to-peer tourne plein pot&#8230;</p>
<h3>4.1.2. Jouer en réseau ?</h3>
<p>Décidemment, votre boulot vous passionne&#8230; Bon désolé, c&#8217;est pas possible. La plupart des jeux en réseaux fonctionnent en mode non connecté (UDP) et c&#8217;est pas possible de relayer de l&#8217;UDP avec cette solution. Si vous voulez quand même, cherchez des infos sur un soft qui s&#8217;appelle ZeBeDee, j&#8217;avais pas eu le temps de creuser à l&#8217;époque.</p>
<p><strong>(MAJ 2009)</strong> Sinon, pensez VPN, hamachi&#8230;</p>
<h3>4.1.3. Remarques sur la messagerie</h3>
<p>A propos du mapping vers des serveurs de messagerie, notez que les fournisseurs bloquent en général l&#8217;accès à leur propre SMTP si l&#8217;IP émettrice n&#8217;est pas sur une plage appartenant à l&#8217;opérateur. Pour éviter le spam d&#8217;inconnus. Donc évitez de passer par le SSH d&#8217;un copain ayant son accès web chez un autre fournisseur pour atteindre votre SMTP, ça risque de ne pas fonctionner. Exemple : vous voulez utiliser le SMTP de wanadoo en passant par une passerelle SSH chez Nerim.</p>
<p>Dans le même ordre d&#8217;idées, il faut en général faire du POP avant de pouvoir envoyer un mail, ça s&#8217;appelle pop before smtp me semble-t-il et c&#8217;est aussi fait pour s&#8217;assurer à peu près que l&#8217;adresse IP de l&#8217;émetteur du mail n&#8217;est pas un inconnu car il s&#8217;est authentifié par un login/password pour accéder au POP.</p>
<h2>4.2. « Légalité » de la chose</h2>
<p>Si vous avez peur qu&#8217;un gros baraqué de l&#8217;équipe réseaux débarque dans votre bureau en disant « qui c&#8217;est l&#8217;abruti qui fait du SSH ? », n&#8217;ayez pas peur.<br />
Premièrement, la connexion au serveur SSH ne se traduit que par une ligne dans les logs du proxy, une ligne du style « CONNECT votrenom.dyndns.org:443 », exactement comme si vous vous connectiez au site https de votre banque. C&#8217;est même mieux vu qu&#8217;il n&#8217;y aura qu&#8217;une ligne alors que pour un vrai site web en http(s), il y a aura une ligne par ressource (image, page web etc).<br />
Deuxièmement, au niveau volumétrie de données échangées, étudions l&#8217;exemple de la lecture de vos mails : on utilise grâce au tunnel SSH un protocole dédié à la lecture de mail et l&#8217;envoi (POP/SMTP). Ca consommera laaaaaaaargement moins de bande passante que de lire les même mails par l&#8217;interface web (bourrée de pubs par exempe). De plus, comme ça ramera moins que le chargement complet de pages web, vous mettrez moins de temps à lire vos mails.<br />
Rassuré ?<br />
Une nuance tout de même, si un psychopathe réalise qu&#8217;il s&#8217;agit de SSH sur port 443 et non de HTTPS, il devrait se poser des questions tout de même. Je n&#8217;ai pas encore rencontré de tels psychopathes.</p>
<p>Enfin, rappelez vous quand même la charte informatique que vous avez signée en rentrant dans votre entreprise.</p>
<h2>4.3. Partage de tunnels ?</h2>
<p>Si vous souhaitez faire profiter de votre tunnel un collègue qui tient absolument à suivre aussi le match de football bloqué par le proxy, regardez les options de putty/ssh pour permettr l&#8217;accès aux ports mappés depuis autre part que votre poste local. Exemple : votre collègue entrerait l&#8217;adresse ip de votre machine et un port mappé pour accéder à un site web particulier&#8230;</p>
<h2>4.4. Bug dans putty</h2>
<p>Je ne sais pas si ce bug est toujours d&#8217;actualité, mais à un moment donné, il fallait absolument mettre le tunnel dynamique en dernier dans la liste des tunnels, sinon il ne fonctionnait pas.</p>
<h2>4.5. Transfert de fichier ?</h2>
<p>Installez filezilla, il permet de faire du SFTP. Vous n&#8217;aurez pas besoin de tunnels SSH mais je tenais à signaler cet outil, libre, gratuit etc etc.<br />
Il vous suffit de déclarer le proxy de l&#8217;entreprise dans les préférences puis de créer une connexion de type SFTP (changez le port en 443) et le tour est joué.</p>
<p>Sinon, sous Windows, le produit commercial « Total Commander » permet d&#8217;utiliser votre tunnel dynamique (SOCKS 4).</p>
<h2>4.6. Méthodes alternatives</h2>
<p>Si SSH ne vous plait pas (pauvre fou), vous pouvez toujours vous renseigner sur les outils suivants : httport, httptunnel (linux only je crois). Ils font un peu le même genre de choses, mais en laaaaaaaargement moins bien.<br />
Les deux encapsulent votre trafic réseau dans des trames HTTP, c&#8217;est lourd, c&#8217;est lent etc. Le seul avantage de httport est que les éditeurs vous fournissent des serveurs (htthost) publics, donc pas besoin d&#8217;avoir un serveur relai chez vous ou chez un ami, mais ils rament, sauf si vous payez <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Quitte à mettre en place un outil pour faire relai, optez pour SSH !<br />
<strong>(MAJ 2009)</strong><br />
A noter stunnel pour faire du tunnel SSL pur (si votre admin réseau a grillé votre communication SSH sur un port SSL&#8230;<br />
<strong>(MAJ 2009)</strong><br />
Quelques liens récemment donnés par Toinator et que je n&#8217;ai pas creusé. Lui oui, c&#8217;est du lourd apparement.<br />
Un bon gros guide :<br />
<a href="http://dag.wieers.com/howto/ssh-http-tunneling/">http://dag.wieers.com/howto/ssh-http-tunneling/</a><br />
sslh : en PERL (fixme : retrouver l&#8217;url)<br />
<a href="http://www.rutschle.net/tech/sslh.shtml">sshl</a> : le même recodé en C pour raisons d&#8217;optimisations<br />
<h1>5. Remerciements</h1>
<ul>
<li>Toinator pour la relecture et quelques précisions, l&#8217;initiation à ce genre d&#8217;outils et le chapitre à venir sur le VPN over SSH, si on peut dire.
</li>
<li>Mandraxe</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/02/23/tunnels-tcp-via-ssh-putty-etc/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Orange Business Everywhere : pour les costards-cravates avant tout&#8230;</title>
		<link>http://michauko.org/blog/2008/08/06/orange-business-everywhere-pour-les-costards-cravates-avant-tout/</link>
		<comments>http://michauko.org/blog/2008/08/06/orange-business-everywhere-pour-les-costards-cravates-avant-tout/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 17:16:13 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de gueule]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[orange business everywhere]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=143</guid>
		<description><![CDATA[La loose&#8230;. pour dépanner à distance pendant mes congés (sympa le mec non ?), j&#8217;ai installé cet accès 3G-edge-++-gprs-truc-machin de chez Orange. Génial, je teste avant de quitter le bureau, c&#8217;est mieux. Lancement d&#8217;une connexion SSH&#8230;.. timeout&#8230; Deux/trois tests plus tard, je vois le plan : ok pour les ports standards de bureautik-man à la [...]]]></description>
			<content:encoded><![CDATA[<p>La loose&#8230;. pour dépanner à distance pendant mes congés (sympa le mec non ?), j&#8217;ai installé cet accès 3G-edge-++-gprs-truc-machin de chez Orange. Génial, je teste avant de quitter le bureau, c&#8217;est mieux. Lancement d&#8217;une connexion SSH&#8230;.. timeout&#8230;<span id="more-143"></span></p>
<p>Deux/trois tests plus tard, je vois le plan : ok pour les ports standards de bureautik-man à la plage (lire ses mails, naviguer sur Internet) mais le reste&#8230;.. zob.<br />
En gros, j&#8217;ai pu voir vite fait que ça passait pour les ports 80, 443, 465, 993 et 1194. Le reste j&#8217;ai pas cherché. A tous les coups, le 25, 143, 110 doivent passer aussi. Sans compter la miriade de saloperies de ports réseaux d&#8217;un Exchange / Active Dir. Ca doit marcher aussi, sinon comment faire pour vite vite reprendre sa propale depuis son transat ?</p>
<p>Alors bon, le VPN passe, donc c&#8217;est bon me direz-vous. Justement pas. S&#8217;il s&#8217;agit de dépanner le VPN ou si vous avez mis des restrictions sur le VPN (histoire que le VPN ne soit pas nécessairement une énorme porte ouverte dans l&#8217;entreprise), ça vous fait une belle jambe que le VPN fonctionne.</p>
<p>Conclusions :<br />
1) Obligé de se taper des SSH sur port 443, des tunnels à gogo lorsque le VPN est trop restrictif&#8230;<br />
2) Tu parles d&#8217;un accès web, tu peux même pas faire ce que tu veux. Pourtant, dès lors que le port 25 est ouvert, si la motivation principale est comme d&#8217;hab d&#8217;endiguer le spam des zombies etc, franchement, le mal est fait. Ca sert à rien de bloquer le reste.<br />
3) Ou alors j&#8217;ai raté une conf quelque part pour ouvrir le port 22 ? je doute</p>
<p>C&#8217;est mes yeux ou c&#8217;est vraiment de l&#8217;accès restreint ce genre de connexion ?</p>
<p>Enfin, bientôt en vacances, c&#8217;est déjà ça&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/08/06/orange-business-everywhere-pour-les-costards-cravates-avant-tout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSHFS</title>
		<link>http://michauko.org/blog/2008/01/18/sshf/</link>
		<comments>http://michauko.org/blog/2008/01/18/sshf/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 13:44:27 +0000</pubDate>
		<dc:creator>ours</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[fstab]]></category>
		<category><![CDATA[fuse]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[sshfs]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2008/01/18/elle-seche-ses-fesses/</guid>
		<description><![CDATA[En fait, il s&#8217;agit d&#8217;un cas d&#8217;utilisation de FUSE (Filesystem in User SpacE) avec SSH (Secure SHell). Pour faire simple, FUSE permet de créer à un utilisateur non root de créer ses propres systèmes de fichier virtuels, pour accéder un peu à n&#8217;importe quoi: le contenu d&#8217;une image de CD, le contenu d&#8217;un dossier stocké [...]]]></description>
			<content:encoded><![CDATA[<p>En fait, il s&#8217;agit d&#8217;un cas d&#8217;utilisation de FUSE (<a href="http://en.wikipedia.org/wiki/Filesystem_in_Userspace" title="FUSE on Wikipedia">Filesystem in User SpacE</a>) avec SSH (<a href="http://www.openssh.org" title="OpenSSH web site">Secure SHell</a>).<br />
<br />
Pour faire simple, FUSE permet de créer à un utilisateur non root de créer ses propres systèmes de fichier virtuels, pour accéder un peu à n&#8217;importe quoi: le contenu d&#8217;une image de CD, le contenu d&#8217;un dossier stocké sur un serveur distant.<br />
<br />
Dans le cas qui nous intéresse, le but est d&#8217;accéder à un dossier distant accessible uniquement via SSH/SFTP, afin de travailler dessus comme si nous étions en local, sur notre cher ordinateur personnel fonctionnant sous <a href="http://www.debian.org">Debian GNU/Linux</a> (au moins la dernière version stable: Etch, avec un kernel Linux version 2.6.14 ou plus récent).
</p>
<p><span id="more-102"></span></p>
<h3>Paquets requis:</h3>
<ul>
<li>pour la partie FUSE (gérée par le kernel):  <code>fuse-utils</code> et <code>fuse-source</code> (si vous utilisez un noyau custom) ;</li>
<li>pour sshfs, <code>sshfs</code>.</li>
</ul>
<h3>La config de base, step by step:</h3>
<ol>
<li>ouvrir un terminal ;</li>
<li>se logguer en root (<code>su -</code>);</li>
<li><code>aptitude install fuse-utils sshfs</code> (ça devrait aussi installer <code>libfuse2</code> qui est une dépendance de <code>fuse-utils</code>);</li>
<li>éventuellement <code>aptitude install fuse-source</code>, puis <code>module-assistant build fuse</code>, &#8230; (mais bon, ça vous avez l&#8217;habitude non?);</li>
<li>faire en sorte que les utilisateurs de l&#8217;ordinateur qui utiliseront FUSE/sshfs fassent partie du groupe <i>fuse</i> (<code>adduser leloginquivabien fuse</code>);</li>
<li>éventuellement, chargez le module <i>fuse</i> (<code>modprobe fuse</code>).</li>
</ol>
<p>Et voilà!
</p>
<h3>Utilisation à la mano, en ligne de commande:</h3>
<p>
C&#8217;est assez simple, dans votre terminal il vous suffit de taper une commande dont le synopsis est:</p>
<ul> <code>sshfs login@server:/chemin/du/dossier /point/de/montage [ -o idmap=user ]</code></p>
<li> <code>login</code> est votre identifiant sur le serveur distant</li>
<li> <code>server</code> est le nom du serveur distant ou son adresse IP</li>
<li><code>/chemin/du/dossier</code>&#8230; facile <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
<li><code>/point/de/montage</code> l&#8217;endroit sur votre ordinateur où vous voulez trouver vos fichiers distants.</li>
<li><code>-o idmap=user</code> est utile uniquement si vos ID utilisateurs sont différents sur le serveur et votre machine, ça vous permet d&#8217;avoir un résultat lisible quand vous faire un <code>ls -l</code> dans <code>/point/de/montage</code> &#8230;</li>
</ul>
<p>Donc, par exemple, je peux faire <code>sshfs guillaume@guillaume.theflyingbear.net:/home/guillaume/public_html ~/mon_site</code> pour accéder dans le répertoire <code>mon_site</code> à ma p&#8217;tite page ouaib.<br />
Plus dangereux, je peux faire <code>sshfs root@un_serveur:/etc /qqpart</code> pour accéder au répertoire <code>/etc</code> d&#8217;un serveur mal configuré <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />
</p>
<h3>Trucs et astuces (imaginez les bricol girls ou les garage babes vous l&#8217;annonçant, c&#8217;est plus sexy&#8230;)</h3>
<p>
<code>sshfs</code> vous demandera le mot de passe qui correspond à votre login sur le serveur distant à chaque fois que vous voudrez monter votre répertoire distant. Pour éviter cela, vous pouvez utiliser l&#8217;authentification par clef de SSH, en utilisant une clef sans phrase secrète (ssh-keygen(1) est votre ami)&#8230;
</p>
<h3>TODO</h3>
<p>Utilisation de FUSE+sshfs avec <code>mount</code> et le le fichier <code>/etc/fstab</code></p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/01/18/sshf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

