« Tunnel http + ssh » : différence entre les versions

Aller à la navigation Aller à la recherche
2 749 octets ajoutés ,  il y a 13 ans
aucun résumé des modifications
m (Ajout catégorie)
Aucun résumé des modifications
 
(13 versions intermédiaires par 4 utilisateurs non affichées)
Ligne 4 : Ligne 4 :
Pour ce faire il vous faut :
Pour ce faire il vous faut :
* 2 ordinateurs : un dans le réseau filtré et un hors de ce réseau mais accessible ;
* 2 ordinateurs : un dans le réseau filtré et un hors de ce réseau mais accessible ;
* Un serveur SSH fonctionnel sur la machine hors du réseau ;
* Un serveur [[Ssh|SSH]] fonctionnel sur la machine hors du réseau ;
* Penser à préparer la recette avant de vous retrouver dans le réseau filtré ;
* Penser à préparer la recette avant de vous retrouver dans le réseau filtré ;
* Le paquet httptunnel installé sur les deux machines.
* Le paquet httptunnel installé sur les deux machines.


=Configuration de la machine complice=
=Configuration de la machine complice=
Nous allons ici nous servir du couple hts et htc, ils sont tout deux dans le paquet httptunnel, il va donc falloir installer ce paquet sur chacune des deux machines.
Nous allons ici nous servir du couple hts et htc, ils sont tous deux dans le paquet httptunnel, il va donc falloir installer ce paquet sur chacune des deux machines.


Sur la machine complice lancer la commande :
Sur la machine complice lancer la commande :
Ligne 15 : Ligne 15 :
hts --forward-port localhost:22 80
hts --forward-port localhost:22 80
</code>
</code>
Ceci aura pour effet de créer un bout du tunnel sur le port 80 de la machine « complice » et la connexion provenant de ce port seras transféré sur le port local 22 (ssh).
Ceci aura pour effet de créer un bout du tunnel sur le port 80 de la machine « complice » et la connexion provenant de ce port sera transférée sur le port local 22 (ssh).


Cette commande retourne immédiatement et ne dis rien, elle crée un deamon qui enregistre ses journaux (bien utiles) dans /var/log/syslog.
Cette commande retourne immédiatement et ne dit rien, elle crée un daemon qui enregistre ses journaux (bien utiles) dans /var/log/syslog.
 
==Automatisation==
Afin d'automatiser le lancement de hts au démarrage de l'ordinateur, il est possible de créer un script dans /etc/init.d. Voici un exemple fait à partir du skeleton :
<code>#! /bin/sh
### BEGIN INIT INFO
# Provides:          tunnel
# Required-Start:    $remote_fs
# Required-Stop:    $remote_fs
# Default-Start:    2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: tunnel HTTP
# Description:      Create a HTTP tunnel on port 80 to port 22 of localhost
### END INIT INFO
 
# Do NOT "set -e"
 
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH='/sbin:/usr/sbin:/bin:/usr/bin'
DESC='Tunnel HTTP'
NAME='hts'
DAEMON=/usr/bin/$NAME
PIDFILE=/var/run/$NAME.pid
DAEMON_ARGS="--forward-port localhost:22 8080 --pid-file $PIDFILE"
SCRIPTNAME='/etc/init.d/tunnel'
 
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
 
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
 
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
 
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
 
do_start()
{
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
}
 
do_stop()
{
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# hts don't delete this pidfile when it exit.
rm -f $PIDFILE
return "$RETVAL"
}
 
do_reload() {
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
 
case "$1" in
  start)
  [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
  do_start
  case "$?" in
  0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  esac
;;
  stop)
  [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
  do_stop
  case "$?" in
  0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
  2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
  esac
;;
  restart|force-reload)
  log_daemon_msg "Restarting $DESC" "$NAME"
  do_stop
  case "$?" in
    0|1)
  do_start
  case "$?" in
  0) log_end_msg 0 ;;
  1) log_end_msg 1 ;; # Old process is still running
  *) log_end_msg 1 ;; # Failed to start
  esac
  ;;
    *)
  log_end_msg 1
  ;;
  esac
;;
  *)
  echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
  exit 3
;;
esac
 
:</code>


=Configuration de votre machine=
=Configuration de votre machine=
Ligne 67 : Ligne 168 :
Order deny,allow
Order deny,allow
Allow from all
Allow from all
# Deny from all
#Allow from .example.com
</Proxy>
</Proxy>


ProxyPass / http://localhost:8888
ProxyPass / http://localhost:8888/


</VirtualHost>
</VirtualHost>
</code>
</code>
et mettez le en route:
'''Note:''', Cette configuration devrait marcher, mais il est arrivé que le dialogue se fasse tout de même sur le port 8888 (en théorie non). Cela est du à un bug dans apache, cf [https://issues.apache.org/bugzilla/show_bug.cgi?id=19954 ce rapport de bug]
 
Remettez apache en route:
<code>
<code>
$ su
$ su
Ligne 91 : Ligne 192 :
<code>htc --forward-port 1234 ssh.votredomaine.org</code> fonctionnera.
<code>htc --forward-port 1234 ssh.votredomaine.org</code> fonctionnera.


[[Category:Réseau et Wifi]]
[[Catégorie:Réseau]]
[[Catégorie:Réseau_Avancé]]
[[Niveau de difficulté::Expérimenté]]
[[Protocole::Wifi]]
175

modifications

Menu de navigation