====== ssh : configuration, utilisation ====== On désire ouvrir une connexion ssh depuis une machine locale (d'un réseau quelconque) sur différentes machines distantes (en général à l'intérieur d'un réseau sécurisé) en passant par une passerelle : * machine locale : //locale.ici// * machine passerelle : //passerelle.la// * machine cible : //cible.la// * serveur d'impression : //imprimeur.la// * serveur de forums : //forum.la// {{:linux:fichiers:schema_tunnel.png?500|Schéma tunnel ssh}} ===== Exemples d'utilisation de ssh ===== D'après la doc simple mais inexacte de http://www.sukria.net/fr/index.php?s=tunnel+ssh et celle correcte mais moins simple de http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/openssh.html ==== ouvrir un tunnel permanent ==== * commande à exécuter sur la machine //locale.ici// pour ouvrir un tunnel afin rediriger les commande ssh (port 22) vers la machine //cible.la// en passant par //passerelle.la// ; //moi// est le nom d'utilisateur sur la machine //passerelle.la// : ssh -N -f -L 2222:cible.la:22 moi@passerelle.la ==== exécuter une commande par le tunnel ==== * exécuter une commande sur //cible.la// par le tunnel : ssh -p 2222 moi@localhost ls -l ssh -p 2222 moi@localhost '(uname -a ;ls -l PERSO/)' * attention, pour **scp**, la redirection de port se fait avec l'option **-P** : scp -p -P 2222 c1.ods c2.ods moi@localhost:PERSO/ scp -p -P 2222 moi@localhost:/local/tempo/f . ==== tunnel pour lire les forums ==== * créer un tunnel pour lire les forums (port 119) sur le serveur //forum.la// : ssh -N -f -l moi -L 9119:forum.la:119 passerelle.la * puis configurer le lecteur de forums ainsi : * serveur : localhost * port : 9119 * //NB : si le serveur exige une connexion sécurisée, il faut utiliser le port **563** à la place du port 119// ==== tunnel pour impression ==== * créer un tunnel pour se connecter au serveur d'imprimantes //imprimeur.la// : ssh -N -f -l moi -L 9631:imprimeur.la:631 passerelle.la * lister et imprimer : lpq -U moi -h localhost:9631 -PmDvert1 lpr -U moi -H localhost:9631 -PmDvert1 ===== Connexion ssh simplifiée à travers un tunnel ===== d'après http://linuxfr.org/tips/581.html, par Sylvain Forêt, amendé par mchanaud Vous êtes sur une machine (//locale.ici//) et vous voulez vous connecter à une machine distante (//cible.la//) qui est sur un réseau privé, en faisant un tunnel à travers une passerelle (//passerelle.la//). Vous effectuez donc la commande suivante: ssh -L [port locale.ici]:[ip de cible.la]:[port ssh de cible.la] passerelle.la où [port //locale.ici//] est un port supérieur à 1024, à moins que vous ne soyez root, et [port ssh de //cible.la//] est le plus souvent 22. * Pour vous connecter à //cible.la// il vous faut ensuite taper: ssh -p [port locale.ici] -l [utilisateur de cible.la] localhost Mais avoir à se rappeler du port, de l'utilisateur et les écrire à chaque fois est fatiguant, et c'est là le coeur de cette astuce. * Éditez votre //~/.ssh/config// (sur la machine //locale.ici//) : Host cible.la User [utilisateur de cible.la] HostName localhost <-- ici on dit que cible.la est en realité localhost Port [port local] <-- celui qu'on a ouvert avec ssh -L * Il vous suffit maintenant d'entrer la commande suivante pour vous connecter à //cible.la// : ssh cible.la >~jce : et ça marche * du coup, ça simplifie aussi les choses pour rsync (qui utilise par défaut ssh) : locale.ici> rsync -avvz hal cible.la:tmp/ opening connection using ssh cible.la rsync --server -vvlogDtprz . tmp/ ===== Documents associés ===== * {{:linux:fichiers:sukria_tunnel_ssh.pdf|tunnel ssh}} par sukria.net * {{:linux:fichiers:openssh.pdf|OpenSSH}} {{filelist>fichiers:*.pdf&style=table&tableheader=1&tableshowdate=1&tableshowsize=1}}