From 85de23a5c5f9a489da12c0c93c58d2243d23235e Mon Sep 17 00:00:00 2001 From: schodet Date: Sat, 18 Jun 2005 17:19:24 +0000 Subject: Ajout d'information sur la connexion depuis l'extérieur. --- d/sys/doc/directssh | 82 ++++++++++++++++++++++++++++++++++++++++ d/sys/doc/sys.txt | 107 ++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 161 insertions(+), 28 deletions(-) create mode 100755 d/sys/doc/directssh (limited to 'd') diff --git a/d/sys/doc/directssh b/d/sys/doc/directssh new file mode 100755 index 0000000..2c8f748 --- /dev/null +++ b/d/sys/doc/directssh @@ -0,0 +1,82 @@ +#!/usr/bin/perl -w +# This is a ssh replacement script to access machine behind another one +# directly. Store in your path as ssh to use it. +# +# Have a look at the Translate section below to make it work for your +# configuration. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Author: Nicolas Schodet +# +use strict; + +my $ssh = '/usr/bin/ssh'; + +my ($login, $host, @args); + +# Parse the arguments. +while ($_ = shift) +{ + # Get login. + if (/^-l$/) { $login = shift } + elsif (/^-l/) { $login = substr $_, 2 } + # Get host or stop. + elsif (!/^-/) + { + if ($host) + { + unshift @ARGV, $_; last + } + else + { + $host = $_; + } + } + # Get options. + else { push @args, $_ } +} + +# Decode host. +unless ($host) { exec $ssh } +if ($host =~ /(.*)@(.*)/) +{ + $login = $1; + $host = $2; +} + +# Get command. +my $cmd; +if (@ARGV) +{ + $cmd = join ' ', @ARGV; +} + +# Translate. +for ($host) +{ + if (/^noe(.linux.efrei.fr)?$/) + { + $host = "choam.efrei.fr"; + $cmd = 'ssh noe.linux.efrei.fr' . ($cmd ? ' ' . $cmd : ''); + } + if (/^robot(.assos.efrei.fr)?$/) + { + $host = "choam.efrei.fr"; + $cmd = 'ssh robot.assos.efrei.fr' . ($cmd ? ' ' . $cmd : ''); + } +} + +# Fill args. +push @args, '-l' . $login if $login; +push @args, $host; +push @args, $cmd if $cmd; + +# This is for debug. +#open TTY, ">/dev/tty"; +#print TTY join ':', @args, "\n"; +#close TTY; + +exec $ssh, @args; diff --git a/d/sys/doc/sys.txt b/d/sys/doc/sys.txt index ba532d1..f751825 100644 --- a/d/sys/doc/sys.txt +++ b/d/sys/doc/sys.txt @@ -6,9 +6,8 @@ Lampion est le serveur du robot. C'est là que l'on regroupe toutes les informations du robot. -Pour ouvrir un compte envoyez un mail à |schodet| avec votre clef publique ssh -de votre compte unix de l'école. Lire la section [Clef ssh] pour plus de -détails. +Pour ouvrir un compte envoyez un mail à |schodet| ou essayez de m'attraper à +proximité d'un ordinateur. Pour se connecter au serveur : @@ -17,7 +16,7 @@ Pour se connecter au serveur : Merci de ne pas laisser traîner des données inutiles sur son compte et de faire le ménage de temps en temps. -** =[Clef ssh]= +** Clef ssh Il y a plusieurs moyen de s'authentifier auprès d'un serveur ssh. La plus commune est le mot de passe, ou le mot de passe est envoyé au serveur sous @@ -27,18 +26,14 @@ Le syst communiquée aux serveurs auquel on souhaite accéder, la clef privée, comme son nom l'indique, on la garde précieusement. -Pour générer ces clefs, on utilise (lisez tout avant de tapper la commande) : +Pour générer ces clefs, on utilise (lisez tout avant de taper la commande) : ssh-keygen -t rsa Il suffit de se laisser guider pour créer la clef. Elles sont stockées dans -|.ssh/id_rsa| et -|.ssh/id_rsa.pub|. Pour m'envoyer votre clef publique afin que je puisse -ouvrir le compte, tappez sous vim : +|.ssh/id_rsa| et |.ssh/id_rsa.pub|. - :r ~/.ssh/id_rsa.pub - -N'envoyez jammais votre clef privée ! +N'envoyez jamais votre clef privée ! Quand on essaye de se connecter à un serveur, le serveur encrypte une chaîne aléatoire avec la clef publique qu'il possède, si le client arrive à la @@ -49,12 +44,6 @@ taper le mot de passe pour se loguer sur une machine. L'inconv que si quelqu'un réussi à voler la clef, il peut aussi le faire. Si vous avez tendance à oublier de locker votre station, mettez un mot de passe. -Pour faire connaître sa clef publique à un serveur, utilisez la commande : - - ssh-copy login@nom.du.serveur - -La clef est alors ajoutée dans |.ssh/authorized_keys|. - *** Clef ssh avec mot de passe. Pour les clefs avec mot de passe, il existe tout de même un moyen de @@ -68,13 +57,83 @@ une copie de la clef priv Il demande alors le mot de passe de la clef. Le top du top, c'est que l'on peut forwarder cet agent sur les machines -auxquelles on se connecte. Pour cela, ajouter dans |.ssh/options| : +auxquelles on se connecte. Pour cela, ajouter dans |.ssh/config| : ForwardAgent yes -** Subversion +*** Envoyer la clef publique au serveur + +Il y a deux moyens, on peut l'ajouter à la main dans |.ssh/authorized_keys| ou +utiliser |ssh-copy|. + +Pour faire connaître sa clef publique à un serveur, utilisez les commandes : + + ssh-add + ssh-copy login@nom.du.serveur + +La clef est alors ajoutée dans |.ssh/authorized_keys| sur le serveur distant. + +** Connexion directe à Lampion depuis Internet + +Commencez par demander un compte sur choam à l'administrateur système. + +*** Méthode de la configuration ssh + +Dans cette méthode, on utilise une connexion ssh pour faire passer l'autre +connexion, les données sont donc cryptées deux fois. + +Ajouter dans le fichier |.ssh/config| : + + Host choam + User monlogin + Hostname choam.efrei.fr + Host robot + User monlogin + ProxyCommand ssh choam /users/es/schodet/bin/client robot.assos.efrei.fr 22 + +Maintenant, la commande |ssh robot| permet de se connecter à Lampion. On peut +utiliser robot comme nom d'hôtes pour tout les programmes utilisant ssh. + +La commande |/users/es/schodet/bin/client| est un client TCP qui se connecte +sur un port à la manière de netcat, sauf que j'en profite pour enregistrer +votre mot de passe :). + +Bon, ok, je pourrais pas puisque avec cette conf, il n'y a que des données +cryptées qui passent dans ce programme. + +On devrait aussi pouvoir utiliser netcat, mais il n'est pas installé sur +choam. + +*** Méthode du script d'indirection + +Dans cette méthode, on utilise deux connexions ssh à la suite, les données +sont décryptées sur la première machine puis re-cryptées pour passer sur la +deuxième. + +On écrit un script shell qui permet de se connecter sur une machine à +l'intérieur de l'école depuis n'importe où. Voila le script shell en +question : + + #!/bin/bash + exec ssh monlogin@choam.efrei.fr "ssh $*" + +Mettre ce script dans le |PATH| et le rendre exécutable. Il suffit ensuite +d'indiquer à CVS de l'utiliser avec la variable |CVS_RSH| ou pour Subversion +en éditant le fichier de configuration et en ajoutant une méthode de tunnel. + +Le script |directssh| est une version plus intelligente que l'on peut utiliser +pour se connecter à n'importe quelle machine. Il suffit de le mettre dans le +|PATH| sous le nom |ssh|. + +** Subversion (svn) Subversion est utilisé depuis 2005 à la place de CVS. +L'url pour l'utiliser est |file:///svn/trunk| depuis lampion ou +|svn+ssh://robot/svn/trunk| depuis l'extérieur (en fait, trunk est le +répertoire qui contient la branche principale). + +Lisez la doc sur les outils de développement |d/doc/subversion| pour en savoir +plus. ** CVS @@ -95,20 +154,12 @@ respecter, si vous avez un doute sur o Pareil, pour utiliser CVS, google ! N'hésitez pas tout de même à poser des questions, mais cherchez quand même par vous même d'abord. -On peu accéder au CVS depuis chez soit aussi. Pour cela, mettez un petit -script dans votre path avec à l'interrieur : - - #!/bin/bash - exec ssh toto@choam.efrei.fr "ssh $*" - -N'oubliez pas de rendre le script executable. - ** Serveur web Le serveur est accessible de l'intérieur du réseau assos par [http://robot/], où de n'importe où sur Internet par [http://www.linux.efrei.fr/robot/]. L'accès depuis l'intérieur permet de consulter les miroirs locaux sur le C++ -ou les datasheet. +ou les datasheets. * Alias mail -- cgit v1.2.3