====== Tunnel SSH inversé vers RDP / VNC / SSH via un serveur tiers ====== La mise en place d'un tunnel SSH inversé se fait dans le contexte suivant: * On veut accéder à un poste dit "client" qui a un service SSH, RDP ou VNC activé mais pas disponible à l'extérieur de son réseau local * On dispose d'un serveur SSH disponible sur Internet * Le poste "client" peut se connecter sur un serveur SSH sur Internet * Le poste a partir duquel on veut accéder au "client" peut se connecter sur un serveur SSH sur Internet ===== Sur le serveur SSH tiers ===== * On accepte les connections via authentification par clés publiques seulement * Un compte utilisateur assigné au poste "client" est configuré, sans shell. La clé publique correspondant au poste "client" y est installée. * Un compte "technicien" est configuré, sans shell (ou avec, selon). La clé publique correspondant au poste "technicien" y est installée. * Un compte "administrateur" est configuré, avec shell. La clé publique correspondant au poste "administrateur" y est installée. ===== Sur un client GNU/Linux ===== * Les applications %%ssh%% et %%ssh-keygen%% disponibles lorsque le paquet %%openssh-client%% est installé * %%gSTM%% pour activer le tunnel sur demande (via le paquet ayant le même nom) * %%openssh-server%% installé et configuré pour accepter uniquement les connections par authentification par clés publiques * La clé publique du poste "technicien" est ajoutée à la fin du fichier .ssh/authorized_keys Installation des applications: sudo apt install openssh-server openssh-client gstm Configuration du service SSH: - Dans %%/etc/ssh/sshd_config%%:PasswordAuthentication no RSAAuthentication yes PubkeyAuthentication yes ===== À partir de Windows ===== Pour mettre en place un tunnel SSH vers un poste Windows (RDP) il faut: * Puttygen.exe (générateur de clés SSH) pour générer la paire de clés publique / privée permettant la connection * Putty.exe (client SSH) pour activer le tunnel sur demande * RDP actif et l'utilisateur configuré pour accepter les connections Putty est disponible ici (prendre les versions 64-bit de préférence): https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html ===== Génération de paire de clés SSH ===== ==== GNU/Linux - SSH ==== - À partir du compte utilisateur: mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa -b 4096Vous pourrez indiquer une phrase secrète pour la paire de clés et confirmer leur emplacement. Cette phrase secrète protégera votre clé privée pendant son stockage:Generating public/private rsa key pair. Enter file in which to save the key (/home/b/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/b/.ssh/id_rsa. Your public key has been saved in /home/b/.ssh/id_rsa.pub.La clé publique sera disponible dans le fichier %%.ssh/id_rsa.pub%% dans le dossier de l' utilisateur. ==== Windows - Putty ==== - Démarrer puttygen.exe - Accepter l'avertissement d'installation Windows - *Parameters > Type of key*: RSA - *Parameters > Number of bits*: 4096 - *Actions > Generate* Important: il faut bouger la souris dans la région blanche! - Une fois terminé, assigner un mot de passe - À partir d'un poste GNU/Linux, générer un mot de passe (avec pwqgen par exemple) - Mettre le mot de passe dans *Key passphrase* et *Confirm passphrase* - Cliquer dans la section *Key > Public key*, choisir *Tout sélectionner* et coller cette information dans un nouveau fichier *PCXXX-NOM_Client_SSH-pub.txt* - mettre dans *Documents* - Actions > Save the generated key > Save private key > PCXXX-NOM_Client_SSH - mettre dans Documents, l'extension est .ppk par défaut (note: pour fins de backup) - Demander à un administrateur d'ajouter l'accès au compte SSH correspondant sur $GW_HOSTNAME à l'aide de la clé publique SSH enregistrée dans *Documents* ===== Configuration du tunnel SSH (session Putty) ===== - Démarrer putty.exe - Dans *Basic settings*: - *Host Name*: $GW_HOSTNAME (nom de domaine de la passerelle SSH cible) - *Port*: 22 (ou autre) - *Save Sessions*: PCXXX-NOM_Tunnel_RDP (caractères de soulignement importants) - Click *Save* - Dans *Connection*: - *Seconds between keepalives (0 to turnoff)*: 30 - *Data > Login Details > Auto-login username*: $USERNAME (nom d'utilisateur GNU/Linux fourni par l'admin) - *SSH > Protocol options > Don't start a shell or command at all* (cocher) - *SSH > Protocol options > Enable compression* - *SSH > Tunnels > Add new forwarded port > Source port*: 2000 (ou autre) - *SSH > Tunnels > Add new forwarded port > Destination*: 192.168.X.XXX:3389 (IP du système Windows 7 cible, port RDP) - Click *Add* - Click sur *Session* et enregistrer la session - SSH > Auth > Private key file for authentication > Pointer vers Documents/fichier .ppk de la clé privée - Retourner à Session, clicker 1 fois sur le profil et sauvegarder ===== Tester le tunnel et la connection RDP ===== - Démarrer putty.exe - Session > Load, save or delete a stored session > Saved sessions, click 1 fois sur le profil, ensuite click Load - Click Open, accepter l'avertissement clé SSH - Une fenêtre noire Putty devrait s'ouvrir, entrer le mot de passe de la clé SSH - Ouvrir l'outil RDP de Windows - Spécifier 127.0.0.1:2000 (ou autre port au lieu de 2000) comme adresse, tester avec les informations RDP du poste serveur ===== Faire le raccourci mRemoteNG ===== Installer "mRemoteNG":https://mremoteng.org/ - Ajouter le tunnel (connection SSH2): *Fichier > Nouvelle connection* (ou Ctrl-N) - Affichage > Nom: PCXXX-NOM SSH Tunnel - Affichage > Panneau: PCXXX-NOM SSH Tunnel - Connexion > Nom d'hôte/IP: $GW_HOSTNAME (nom du serveur passerelle) - Connexion > Nom d'utilisateur: fourni par l'admin système - Connexion > Mot de passe: celui qui protégeait la clé SSH - Protocole > Protocole: SSH2 - Protocole > Port: 22 (ou autre) - Session Putty > choisir celle enregistrée lors de la création de session - Ajouter la connection RDP: *Fichier > Nouvelle connection* (ou Ctrl-N) - Affichage > Nom: PCXXX-NOM accès RDP - Affichage > Panneau: PCXXX-NOM accès RDP - Connexion > Nom d'hôte/IP: 127.0.0.1 - Connexion > Nom d'utilisateur: celui sur le PC Windows cible - Connexion > Mot de passe: celui sur le PC Windows cible - Protocole > Protocole: RDP - Protocole > Port: 2000 (ou autre) - Session Putty > choisir celle enregistrée lors de la création de session