[Tuto/HowTo] [GNU/Linux] mettre en place un ou plusieurs Tunnels SSH

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

[Tuto/HowTo] [GNU/Linux] mettre en place un ou plusieurs Tunnels SSH

Message par voxdemonix » mar. nov. 15, 2016 11:19 pm

musique d'entrain : [_precheurori_] Présentation
Les tunnels ssh (ssh tunneling) permettent de faire communiquer de façon sécurisé des applications sur plusieurs machines différentes en créant un tunnel de données. Un tunnel de données est une connexion chiffrée entre deux machines dans laquelle transitent vos données "utile" ainsi que des données aléatoires dissimulant l'(in)activité du tunnel. SSH est compatible Lan, Wan et Tor.
Le script que nous allons utiliser ici permet d'ouvrir un tunnel en Lan quand c'est possible si non il passe par le Wan ou par le réseau Tor suivant l'hostname que vous lui avez donné.
  • Note : Si le serveur SSH ou la connexion réseau n'est pas disponible après le délais (sleep 240), la création du tunnel échoue. En cours d'utilisation: si le serveur SSH devient indisponible le client ssh (autossh) va tenter de se reconnecter au serveur jusqu'à se que le tunnel soit ré-ouvert.
  • Nota Bene : si vous souhaitez utiliser ce tunnel pour effectuer un montage davfs2/webdav, ajoutez noauto comme paramètre à votre fstab comme suit
    • Code : Tout sélectionner

      http://127.0.0.1:8080/owncloud/remote.php/webdav/ /media/monPointDeMontage davfs _netdev,rw,user,noauto 0 0
      /media/monPointDeMontage/ => remplacez par le path où vous souhaitez monter votre dossier distant
    et ajoutez à la fin du script ci-bas s'occupant de la création du/des tunnel(s) SSH
    • Code : Tout sélectionner

      sleep 10
      su $UserLocalForSshTunneling -c "mount /media/monPointDeMontage/"
      
      $UserLocalForSshTunneling => si l'utilisateur utilisé pour effectuer le montage est différent de celui utilisé pour créer le(s) tunnel(s) SSH, remplacez cette valeur par le nom du dit utilisateur
      /media/monPointDeMontage/ => remplacez par le path où vous souhaitez monter votre dossier distant

[_precheurori_] Farm Link [_precheurori_] Mise en place
  1. Installez les pré-requis
  2. Rendez compatible le client ssh avec le réseau Tor
  3. Exportez votre clés sur votre server
  4. Créez le dossier /opt/scripts
  5. Créez le script
  6. Ajoutez le code suivant en l'adaptant
    • Code : Tout sélectionner

      #!/bin/bash
      #  -> WTFPL - infos script : https://www.0rion.netlib.re/forum4/viewtopic.php?f=40&t=369
      # -> code by voxdemonix <-
      # -> V1.3 <-
      #su myLocalUser -c 'autossh -M 0 -q -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L 8080:127.0.0.1:80 proxy-ssh@torOrWanadress.onion -f'
      
      
      if [ ! "$SUDO_USER" ]; then
      exit 0
      fi
      
      
      IpOwncloudLocale="192.168.1.42" # l'adresse IP locale de votre serveur hébergeant owncloud
      AdresseServerOnion="torOrWanadress.onion"
      MacOwncloudLocal="00:00:00:00:00:00" #l'adresse mac du serveur hébergeant owncloud (tapez ifconfig dans un terminal sur votre server pour la voir)
      UserLocalForSshTunneling="myLocalUser" # l'user a utiliser sur votre ordinateur pour le montage du tunnel
      UserRemoteForSshTunneling="proxy-ssh" # l'user a utiliser côté server ( /!\ n'utilisez jamais root !)
      portEntree="8080" # le port sur le pc local, remplacez par 8443 si vous utilisez httpS
      portSortie="80" # le port sur le serveur, remplacez par 443 si vous utilisez httpS
      
      
              # boucle qui permet d'attendre que le réseau soit connecté
      stop="0"
      while [ $stop -lt 1 ]
      do
      sleep 120       # temps d'attente entre chaque tentative
      
      _IP=$(hostname -I) || true
      if [ "$_IP" ]; then
              #printf "My IP address is %s\n" "$_IP"
              stop=1
      fi
      done
      
      ping $IpOwncloudLocale -c 2 >> /dev/null 2>&1
      macRecover=$(arp -n | grep -i -o $MacOwncloudLocal)
      
      if [ "$macRecover" == "$MacOwncloudLocal" ]; then
      #        echo "local"
              su $UserLocalForSshTunneling -c "autossh -M 0 -q -N -o 'ServerAliveInterval 60' -o 'ServerAliveCountMax 3' -L $portEntree:127.0.0.1:$portSortie $UserRemoteForSshTunneling@$IpOwncloudLocale -f"
      else
      #        echo "tor/wan"
              su $UserLocalForSshTunneling -c "autossh -M 0 -q -N -o 'ServerAliveInterval 60' -o 'ServerAliveCountMax 3' -L $portEntree:127.0.0.1:$portSortie $UserRemoteForSshTunneling@$AdresseServerOnion -f"
      fi
      • IpOwncloudLocale="192.168.1.42" => l'adresse IP locale de votre serveur hébergeant owncloud
        AdresseServerOnion="monTorHiddenService.onion" l'hostname WAN ou l'adresse Tor Hidden Service au choix
        MacOwncloudLocal="00:00:00:00:00:00" => l'adresse mac du serveur hébergeant owncloud (tapez ifconfig dans un terminal sur votre server pour la voir)
        UserLocalForSshTunneling="myUserLocal" => l'user a utiliser sur votre ordinateur pour le montage du tunnel
        UserRemoteForSshTunneling="myUserServer" => l'user a utiliser côté server ( /!\ n'utilisez jamais root !)
        portEntree="8080" => le port sur le pc local, remplacez par 8443 si vous utilisez httpS
        portSortie="80" => le port sur le serveur, remplacez par 443 si vous utilisez httpS
  7. Rendez exécutable le script
  8. Ajoutez le lancement du script au boot en éditant /etc/rc.local
Modifié en dernier par voxdemonix le dim. mai 07, 2017 11:10 pm, modifié 8 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: [Tuto/HowTo] [GNU/Linux] mettre en place un ou plusieurs Tunnel SSH

Message par voxdemonix » mer. nov. 16, 2016 1:07 pm

Informations Supplémentaires & Questions :


Comment lister les tunnels SSH actifs ? Comment couper/stopper un tunnel SSH spécifique ?
  1. D'abord listez les tunnels ssh (même commande que ci-haut)
    • Code : Tout sélectionner

      ps -ax | grep "autossh" | grep -v "grep"
      Récupérez l'identifiant du processus (série de nombre en début de ligne).
      Si vous avez trop de tunnels SSH affiché pour vous y retrouver: ajoutez | grep "votreUserDistant_ou_votreHostname" à la commande et celle-ci restreindra la recherche.
  2. Enfin, tuez le processus qui gère le tunnel SSH
Comment couper/stopper tout les tunnels SSH ?
  1. Ouvrez un terminal de commande
  2. Lancez la commande suivante
    • Code : Tout sélectionner

      kill $(ps -ax | grep "autossh" | grep -v "grep" | grep -Eo " [0-9]{4,6} ")
Comment régler l'erreur "sign_and_send_pubkey: signing failed: agent refused operation"
  1. Tapez dans votre terminal la commande suivante :
  2. Si le problème persiste après reboot éditez votre fichier /home/user/.bashrc et ajoutez la commande précédente tout a la fin du fichier
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Qui est en ligne

Utilisateurs parcourant ce forum : CommonCrawl [Bot] et 0 invité