====== Utilisation d’un tunnel ssh pour accéder à un poste fixe non accessible directement depuis internet ====== En faisant cette opération, vous contrevenez peut-être à la PSSI mise en place par votre entité. C’est à vous qu’il appartient de le vérifier avant d’utiliser les informations qui suivent. ===== Concept ===== Dès lors qu’une même machine est accessible par le protocole ssh depuis les deux machines que vous souhaitez mettre en relation, il est possible de les mettre en relation par cet intermédiaire. En fonction de la configuration du réseau et des services ssh, il pourra y avoir des variations. Nous considérons ici que les différents serveurs ssh écoutent sur le port standard (22) — à adapter au besoin à votre configuration. De même, si le USERNAME n’est pas le même sur tous les postes il faudra préfixer les noms des machines par le username@ adéquat. ===== Configuration sur le poste à joindre ===== ssh -R PORT:localhost:22 COMMUN Avec (par exemple) : COMMUN = gw.info.unicaen.fr PORT = 2222 # il doit être libre et > 1024 Pour que cela fonctionne en permanence, vous pouvez envisager de lancer cette commande dans un screen ou tmux. Si vous n’avez pas besoin d’une session interactive, l’option de la commande ssh qui vous intéresse est « -N ». Au niveau suivant se situe l’automatisation de la connexion (cron, at, service …). Attention, si vous utilisez l’authentification par clef publique, il faut protéger la clef privée. Si vous utilisez l’authentification par mot de passe, vous ne devriez pas songer à l’automatisation de toute façon. Une connexion en dehors d’un terminal (cron par exemple) nécessitera l’utilisation de l’option « -tt » du client ssh. Si vous ne savez pas à quoi cela correspond, vous devriez lire le manuel de la commande ssh. ===== Connexion vers le poste à joindre ===== Depuis votre poste vous utilisez la commande : ssh -J COMMUN -p PORT localhost Si votre nom d’utilisateur local n’est pas le même que votre //PersoPass// de l’université, il est nécessaire de préciser celui-ci : ssh -J persopass@COMMUN -p PORT persopass@localhost Si votre version de ''ssh'' est ancienne, elle ne connaît peut-être pas l'option ''-J'' (qui a été ajoutée dans OpenSSH 7.3). Cependant cette option n'est qu'un alias de la commande suivante : ssh -o ProxyCommand="ssh persopass@COMMUN -W %h:%p" -p PORT persopass@localhost ===== Rendre le tunnel et le saut transparents à l'utilisation ===== Ça peut être un peu pénible de taper ces commandes à chaque fois qu'on souhaite se connecter au poste à joindre, et cela empêche d'utiliser simplement ''scp'' ou ''sftp'' pour transférer des données. Le plus pratique est de placer le contenu suivant dans le ''~/.ssh/config'' de la machine où vous devez taper les commandes, en remplaçant POSTEÀJOINDRE par un nom qui vous plaît : Host POSTEÀJOINDRE User persopass HostName localhost Port PORT ProxyCommand ssh persopass@COMMUN -W %h:%p Pour vous connecter il vous suffira alors de faire ''ssh POSTEÀJOINDRE'' (et vous pourrez utiliser ''POSTEÀJOINDRE'' comme nom de machine pour les commandes ''scp'' et ''sftp'').