En détail, la marche à suivre est la suivante :
telnet
à l'extérieur de celui-ci et s'y loger.
sh
. C.à.d. que
votre shell par défaut soit une variante de csh
. Appelez
telnet
par
(setenv SHELL /bin/sh; telnet machine.la-bas.dehors)
.
term -r -n off telnet
.Maintenant revenez à l'invite telnet
sur la machine locale,
en utilisant le caractère d'échappement ^]
(ou celui que vous
voulez), puis utilisez la commande de telnet
pour exécuter une
commande shell !
pour lancer term
:
telnet> ! term -n on telnet <&3>&3
Et voilà !!! (Ndt : En français dans le texte).
(Si vous possédez une autre version de telnet
, vous risquez
d'avoir
à utiliser d'autres descripteurs de fichiers que 3. C'est facile
à déterminer en utilisant trace. Mais 3 semble fonctionner sur tous les
telnet
de type bsd que j'ai testés. J'ai également
essayé sous Sun OS 4.x et les distributions Linux standard.)
Certains clients telnet ne possèdent pas de caractère d'échapement !. Par exemple, client telnet diffusé avec la Slackware 3.0 en fait partie. Les sources de ce client sont sensés provenir de ftp://ftp.cdrom.com:/pub/linux/slackware-3.0/source/n/tcpip/NetKit-B-0.05.tar.gz, paquetage qui contient le caractère d'échapement. Une solution assez simple est de récupérer ces sources et de les recompiler. Je n'y suis malheureusement pas arriver. De plus, si vous êtes à l'intérieur d'un firewall socks, vous devrez avoir un client telnet à la SOCKS. J'ai réussi à compiler un tel cient en utilisant ftp://ftp.nec.com/pub/security/socks.cstc/socks.cstc.4.2.tar.gz ou si vous êtes à l'extérieur des USA, ftp://ftp.nec.com/pub/security/socks.cstc/export.socks.cstc.4.2.tar.gz
Autrement, sous Linux version 1.2.13 ou précédentes,
vous pouvez mettre telnet
en
sommeil avec ^]^z
, récupérer son pid et lancer :
term -n on -v /proc/ < telnetpid> /fd/3 telnet
Cela ne fonctionne plus avec les noyaux 1.3 et supérieur, qui ont vérouillé certaines failles de sécurité pour éviter les accès à des descripteurs de fichiers n'appartenant pas au propriétaire du processus ou à ses fils.