FREN

#FF00AA


24 juin 2007

Comment copier “simplement” des fichiers entre plusieurs Mac

@apple@

J’ai eu une révélation, hier : la meilleure façon de copier des fichiers entre les ordinateurs de mon réseau local devrait être les droplets de Transmit, avec FTP via SSH — l’avantage étant que le transfert serait totalement sécurisé, et que mes mots de passe ne risqueraient pas de passer en clair sur le wifi.

J’ai donc testé, et… c’était bien trop lent : d’abord le droplet se lance, puis il lance Transmit s’il ne tournait pas déjà, et il se connecte (et il a l’air plutôt lent pour se connecter en SFTP), et l’icône de Transmit prend de la place dans le dock… Trop lourd.

J’ai alors réalisé que je pouvais utiliser la ligne de commande, avec un peu d’AppleScript autour. Je me suis battu avec un petit moment, et j’ai passé deux heures à contourner les bugs de Keychain Scripting avant de réaliser que je ne pouvais pas envoyer le mot de passe à scp en paramètre et que j’étais obligé d’utiliser des clés SSH. Ce qui est plus sûr, mais aussi bien plus compliqué à mettre en place — pas que ça me gêne, personnellement, mais ça va rendre les instructions qui suivent bien plus complexes.

Il faut donc que je vous appâte, d’abord ; voilà à quoi ça ressemble :

D’accord, ce n’est pas très spectaculaire. Mais imaginez que vous pouvez déposer un fichier, ou un dossier, ou plusieurs de chaque, sur l’une de ces icônes, et ils sont instantanément copiés sur le bureau de l’ordinateur correspondant (ou n’importe où ailleurs, on peut créer un droplet par destination). Pas besoin d’attendre que le Finder monte un partage réseau (à supposer qu’il y arrive) ou qu’une application FTP se lance. Pas besoin de garder iChat ouvert pour utiliser les transferts de fichier (qui demandent une confirmation, même avec Chax, pour enregister fichiers zip et applications). Pas besoin d’acheter des sharewares trop chers pour ce qu’ils font, et pas besoin de faire tourner des freewares buggés. Tout passe par la magie d’Unix.

Oh, et ça marche parfaitement avec les applications, liens ou clippings. Et on peut même glisser-déposer directement un lien depuis Safari vers un de ces droplets dans le dock (mais pas sur le bureau).

 

La configuration, maintenant. Qui va décourager la plupart d’entre vous, et sembler évidente aux autres, donc on va dire que j’écris ce post avant tout pour moi-même, pour avoir une trace des opérations nécessaires la prochaine fois que j’ajoute une machine à mon réseau. Mais, même si vous n’y connaissez rien à Unix, vous pouvez parfaitement vous débrouiller si vous suivez à la lettre ces instructions en copiant-collant exactement ce qu’il faut.

Disons que vous avez quatre ordinateurs en réseau : ComputerA, ComputerB, ComputerC et ComputerD. (Les noms sont définis dans les préférences de Partage, et s’il y a des espaces ou autres caractères spéciaux dans les noms des vôtres c’est le moment de les renommer, à moins que vous vouliez remplacer les noms par les adresses IP dans toute la suite.)

La première étape est d’activer SSH sur chaque machine dans les préférences de Partage (en anglais, c’est “Remote Login,” pour la traduction il faudra demander à quelqu’un d’autre) :

Si votre firewall est activé, assurez-vous que le port correspondant soit ouvert (il devrait l’être automatiquement) :

Lancez Terminal sur ComputerA pour créer la clé SSH qui va vous permettre de vous connecter d’un ordinateur à l’autre sans taper de mot de passe (si vos adresses réseau ne commencent pas par 192.168, modifiez la ligne correspondante, mais ne perdez pas en route l’espace qui suit le guillemet) :

mkdir ~/.ssh

ssh-keygen -f ~/.ssh/local -t rsa -N ""

echo -n ’from="*.local,192.168.*;" ’ >> ~/.ssh/authorized keys2

cat ~/.ssh/local.pub >> ~/.ssh/authorized keys2

chmod 0600 ~/.ssh/authorized keys2

(Note : à la fin de ces instructions, quelqu’un qui serait sur l’un de vos ordinateurs, loggué sous votre nom, et connecté à votre réseau, aurait accès à vos autres ordinateurs sur le même réseau. Ce que je trouve parfaitement acceptable, mais vous êtes peut-être plus parano que moi. Auquel cas vous devriez voir un médecin.)

Copiez les clés SSH vers les autres ordinateurs (où YourUserName est le “nom d’utilisateur court” défini sur chaque ordinateur dans les préférences de Comptes d’utilisateurs ; dans mon cas c’est le même sur chaque, mais ça peut ne pas l’être chez vous) :

scp ~/.ssh/local ~/.ssh/local.pub ~/.ssh/authorized keys2 YourUserName@ComputerB.local:/Users/YourUserName/.ssh

scp ~/.ssh/local ~/.ssh/local.pub ~/.ssh/authorized keys2 YourUserName@ComputerC.local:/Users/YourUserName/.ssh

scp ~/.ssh/local ~/.ssh/local.pub ~/.ssh/authorized keys2 YourUserName@ComputerD.local:/Users/YourUserName/.ssh

Maintenant, il faut lancer SSH une première fois à la main pour qu’il reconnaisse les autres ordinateurs à l’avenir (il y a peut -être une option de ligne de commande pour ignorer known hosts, mais je ne la connais pas — toute information est bienvenue). Vous allez devoir taper “yes” après chaque ligne (à moins que vous ayez déjà utilisé SSH) :

ssh -i ~/.ssh/local ComputerB.local /usr/bin/true

ssh -i ~/.ssh/local ComputerC.local /usr/bin/true

ssh -i ~/.ssh/local ComputerD.local /usr/bin/true

La partie chiante, c’est qu’il faut ensuite aller devant le clavier de ComputerB, lancer Terminal, et faire la même chose (enfin, vous pourriez imbriquer des ssh, mais dans ce cas je vous laisse improviser) :

ssh -i ~/.ssh/local ComputerA.local /usr/bin/true

ssh -i ~/.ssh/local ComputerC.local /usr/bin/true

ssh -i ~/.ssh/local ComputerD.local /usr/bin/true

A répéter sur ComputerC et ComputerD, et c’en est fini avec Terminal. Téléchargez cette application AppleScript, ouvrez-la dans Script Editor et modifiez les trois premières lignes ; faites autant de copies différentes que vous voulez, et voilà. (Si vous n’avez pas Growl, il faudra soit l’installer — ce que je recommande — soit enlever les blocs d’AppleScript correspondants.)

Vous voulez savoir quand je poste du contenu sur mon blog ? Il suffit de vous inscrire gratuitement à un agrégateur RSS (Feedly, NewsBlur, Inoreader, …) et d'ajouter www.ff00aa.com à vos flux (ou www.garoo.net pour vous abonner à tous les sujets). On n'a pas besoin de newsletters, pas besoin de Twitter, le RSS existe toujours.

Mentions légales : ce blog est hébergé par OVH, 2 rue Kellermann, 59100 Roubaix, France, www.ovhcloud.com.

Les données des visiteurs de ce blog ne sont pas utilisées ni transmises à des tiers. Les posteurs de commentaires peuvent demander leur suppression par e-mail.

Tous contenus © de l'auteur ou couverts par le droit de citation.