Re: [#!/fr] Partage de fichiers sécurisé

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Patrick Proniewski
Date:  
À: La liste francophone des scripts shell
Sujet: Re: [#!/fr] Partage de fichiers sécurisé
Bonjour,

On 28 mars 08, at 18:31, Yves PETRONIN wrote:

> ssh toto@fileserver -L5548:localhost:548 -N
>
> puis en établissant la liaison au serveur par la commande afp://
> localhost:5548
>
> Cette solution me plait bien, mais je ne connais pas ses
> inconvénients.


Je serais tenté de dire qu'il n'y en a pas vraiment, à part peut être
une légère dégradation du débit, mais AFP est assez immonde, de toute
manière, dès qu'on commence à être loin du serveur (via internet par
exemple).


> Par ailleurs je ne sais pas bien la rendre pérenne, c'
> est à dire déclencher le transfert de port à chaque démarrage de
> session. Je suppose qu'il faut modifier un des fichiers de
> configuration système. Est que l'un des experts de la liste peut
> donner un conseil? Merci.


Pour ce genre de chose, maintenant (depuis Mac OS X 10.4) il vaut
mieux passer par Launchd.
Le fonctionnement est le suivant :

- tu crées un fichier de config pour Launchd qui dit "si je me
connecte au port 5548, ouvre un tunnel ssh vers telle machine"
- tu le charge dans Launchd pour le rendre actif. À partir de ce
moment, launchd écoute sur le port 5548
- tu fais ta requête afp://localhost:5548
- launchd intercepte ta requête, ouvre la connexion ssh, et assure
ensuite les entrées-sorties avec ce tunnel.

Avec ce fonctionnement, la connexion ssh est établie "on demand".
C'est un gros avantage si tu démarres ton mac sans avoir de connection
réseau. Ça peut devenir un inconvénient si la connexion est
silencieuse trop longtemps, elle risque alors de se couper, mais Mac
OS X 10.5 gère très bien les déconnexions AFP sauvages. Ce n'est plus
un problème bloquant.

Léger problème de launchd : il est incapable de créer un tunnel ssh
authentique (port:machine:port), il faut recourir à une astuce.

Voici un exemple de fichier de config (~/Library/LaunchAgents/
perso.filesharing.plist) :


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd
">
<plist version="1.0">
<dict>
<key>Debug</key>
<false/>
<key>Label</key>
<string>perso.filesharing</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/ssh</string>
<string>ton_login@machine_distante</string>
<string>nc</string>
<string>localhost</string>
<string>548</string>
</array>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>5548</string>
<key>SockType</key>
<string>stream</string>
</dict>
</dict>
<key>StandardErrorPath</key>
<string>/tmp/filesharing.err</string>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
</dict>
</plist>

La commande réellement effectuée pour la connexion ssh est alors :

ssh ton_login@machine_distante nc localhost 548

à vérifier :
- je suis indécrottable, j'oublie toujours si ce doit être un
LaunchAgents ou un LaunchDaemons)
- je n'ai pas testé cela sur de l'afp (je l'utilise pour faire passer
irc et usenet)

Cela se charge tout seul à l'ouverture de la session, mais on peut le
charger manuellement via cette commande :

launchctl load ~/Library/LaunchAgents/perso.filesharing.plist

Il faut par ailleurs créer une clé SSH pour que la connexion ssh
puisse s'établir sans avoir à taper de mot de passe.

patpro_______________________________________________
archives :
http://listes.patpro.net/list/sshfr.fr.html
http://listes.patpro.net/mailman/listinfo/script_shell_fr