Yop

Aller au contenu | Aller au menu | Aller à la recherche

dimanche, 31 décembre 2006

Exécution d'un script local sur un serveur distant

Parfois utile lorsque l'on code un script en local, mais que l'on souhaite l'exécuter ou le tester sur un autre serveur (sans avoir a le transférer d'abord)

cat script.sh | ssh user@host bash

cat script.sh | ssh user@host "bash -s"


Si l'option -s est présente, ou s'il n'y a plus d'arguments sur la ligne de commande, après le traitement des options, l'interprétation se fera depuis l'entrée standard. Cette option permet de remplir les paramètres positionnels tout en invoquant un shell interactif.

samedi, 12 août 2006

Synergy - Partage du clavier/souris entre plusieurs ordinateurs

Synergy permet de partager son clavier/souris entre plusieurs ordinateurs même avec différents OS.

Comme je dois désormais utiliser un Windows en plus de mon Ubuntu, j'ai enfin installé cette petite appli qui se rend donc indispensable.

Les informations du clavier/souris sont redirigées à travers le réseaux vers l'ordinateur à contrôler. Le passage d'un ordi à l'autre se fait en approchant la souris du bord de l'écran correspondant. Et en plus, il partage aussi le clipboard !

samedi, 8 juillet 2006

Faire partager sa session avec un utilisateur distant

Le résultat de cette méthode ressemble beaucoup à celui utilisant la commande screen et présenté dans un précédent billet
(La différence étant qu'ici avec script, le 2ème utilisateur ne peut pas agir)

Cette technique peut être utilisée pour montrer à un collaborateur ou un client distant ce qu'on est en train de bidouiller sur le serveur..

  • Création d'un fichier fifo

[yannick@PiouPiou ~] mkfifo /tmp/sortieScript
[yannick@PiouPiou ~] ll /tmp/sortieScript
prw-r--r-- 1 yannick yannick 0 Jul 6 02:59 /tmp/sortieScript
[yannick@PiouPiou ~]

mkfifo - Create named pipes (FIFOs) with the given NAMEs.
A FIFO special file (a named pipe) is similar to a pipe, except that it is accessed as part of the file system.
[...] the FIFO special file has no contents on the file system

  • Lecture du fichier par l'utilisateur distant

[yannick@autre ~] cat /tmp/sortieScript

Attention: tant que le fichier ne sera pas "caté", il ne pourra pas être utilisé par la commande suivante...

When a process tries to write to a FIFO that is not opened for read on the other side, the process is sent a SIGPIPE signal.

  • Faire sortir script dans ce fichier

[yannick@PiouPiou ~] script -f /tmp/sortieScript
Script started, file is /tmp/sortieScript

A partir de maintenant tout ce qui est tappé est visible par la personne en train de "caté" le fichier sortieScript y compris les sessions interractives comme vi...

Arrêter de logguer dans le fichier par un CTRL-D

-f Flush output after each write. This is nice for telecooperation [...]

  • Petite démo

samedi, 22 avril 2006

tsock - pour tout rendre compatible Socks !

  • Introduction

tsocks permet en gros, de faire passer par un proxy Socks, des applications qui nativement ne le permettent pas. Il permet donc, par exemple, de faire passer une appli par le proxy Socks d'OpenSSH et donc de chiffrer les données...(voir billet précédent).

tsocks' role is to allow these non SOCKS aware applications (e.g telnet, ssh, ftp etc) to use SOCKS without any modification. It does this by intercepting the calls that applications make to establish network connections and negotating them through a SOCKS server as necessary.

  • Installation

Sous Debian/Ubuntu un simple:

sudo apt-get install tsocks

  • Les fichiers principaux:

Le fichier de conf /etc/tsocks.conf
Le binaire /usr/bin/tsocks
La librairie /usr/lib/libtsocks.so

  • Configuration:

Modifier le fichier /etc/tsocks.conf
Il permet d'indiquer:
-les réseaux qui accéderont sans proxy Socks
-les proxy socks à utiliser en fonctions des réseaux à accéder
-le proxy socks par défaut

Dans le cas d'utilisation d'un proxy Socks lancé localement par OpenSSH sur le port 1234, la configuration de tsocks sera du type:
server = 127.0.0.1
server_port = 1234
server_type = 5

  • Utilisation

- Soit on envoi directement toutes les applis lançées dans ce shell vers tsocks (et donc à travers le tunnel SSH dans notre cas) avec:

source tsocks -on
source tsocks -off

On peut voir si la librairie est chargée avec:
[yannick@yop ~] env |grep LD_PRELOAD
ou
[yannick@yop ~] source tsocks -show
LD_PRELOAD="/usr/lib/libtsocks.so"

- Soit on envoit les applis "une par une" vers tsocks (et donc le tunnel OpenSSH) avec:

tsocks <NomAppli>

exemples:

[yannick@yop ~] tsocks liferea &

On peut vérifier avec quelquechose comme:

[yannick@yop ~] wget -O - -q http://www.whatismyip.org
1.1.1.1
[yannick@yop ~] tsocks wget -O - -q http://www.whatismyip.org
2.2.2.2
[yannick@yop ~]

  • Conclusion:

Ce type de connexion (appli -> [tsocks -> OpenSSH]-> ressource ) peut permettre aussi bien de "sortir" d'un réseau "non sûr" (Accès Wifi...)en passant par son Pc perso par exemple, que d'accéder de l'extérieur aux ressources "internes" d'un réseau d'entreprise...

Tunnel SSH avec l'option -D

Ce billet présente l'utilisation de l'option -D de la commande ssh.
Pour illustrer cette option, prenons le cas ou vous êtes dans un réseau "non sûr" et que vous voulez surfez sans que le réseau dans lequel vous êtes puisse trop vous surveiller...
Prérequis: vous avez une machine chez vous en adsl sur laquelle écoute un serveur SSH (de préférence sur le port 80 ou 443 dans notre exemple) mais sur laquelle il n'y a pas besoin d'avoir un Squid ou autre...
Il suffit alors de monter un tunnel SSH vers le serveur à la maison (même à travers un proxy Http) et de surfer à l'intérieur du tunnel pour sortir réellement sur le net par la ligne de la maison...



-D port
Specifies a local "dynamic" application-level port forwarding. This works by allocating a socket to listen to port on the local side, and whenever a connection is made to this port, the connection is forwarded over the secure channel, and the application protocol is then used to determine where to connect to from the remote machine. Currently the SOCKS4 and SOCKS5 protocols are supported,[...]

  • Le petit dessin illustrant la communication de l'exemple ci-dessous:

  • On lançe sur la machine client la commande SSH:

ssh -D 1111 -p 443 login@srvMaison

  • Il suffit ensuite de configurer notre client Http (Firefox) pour utiliser un proxy Socks sur le serveur 127.0.0.1 sur le port 1111

  • Fin:

Nous surfons donc sans que le réseau dans lequel nous sommes ne puisse voir les sites où nous allons...
...et ceci sans utiliser rien d'autre qu'un serveur SSH "perso"...

  • La même chose en graphique avec putty:

  • Et les autres applis ne pouvant pas être configurées pour utiliser un proxy SOCKS ?

ahhhh... eh bien c'est possible aussi... et c'est l'objet du billet suivant :)

  • PS: Attention à la confidentialité des requètes DNS qui ne passent pas dans le tunnel...

- page 3 de 5 -