summaryrefslogtreecommitdiff
path: root/d/sys
diff options
context:
space:
mode:
Diffstat (limited to 'd/sys')
-rwxr-xr-xd/sys/doc/directssh82
-rw-r--r--d/sys/doc/sys.txt107
2 files changed, 161 insertions, 28 deletions
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ème est basé sur une clef publique et clef privée. La clef publique est
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énient, c'est
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ée non cryptée afin de répondre aux demandes de
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ù ranger quoi, posez la question.
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