====== 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}}