Se connecter en SSH à une machine sur un autre réseau
Le mardi 14 mars 2017 par Benjamin BoudoirParfois, on veut se connecter sur une machine qui ne nous est pas directement accessible. On peut rebomdir dessus, mais ce n'est pas forcément le plus pratique. En particulier, quand on a besoin de faire des copies de fichiers par exemple.
Voici donc, quelques moyens de s'en sortir.
Tunnel SSH
Une technique courante, consiste à faire un tunnel SSH sur la gateway et ouvrir un port local sur sa machine pour se connecter à la machine qui nous interesse.
Pour celà, on ouvre d'abord la connexion sur la passerelle SSH :
user@localhost$ ssh $login@$gateway -L 2222:$mamachine:22
Explications :
- -L : ouverture d'un port local sur la machine courante
- 2222 : le numéro du port ouvert sur ma machine pour le tunnel (ici, '''2222''')
- mamachine : le nom de la machine que je veux atteindre
- 22 : le port du serveur SSH de $mamachine
Une fois le tunnel ouvert, on se connecte à sa machine sur le port local indiqué :
user@localhost$ scp -P 2222 $fichier $login@localhost
Proxy SSH
La technique du proxy est plus simple à mettre en œuvre. Il suffit pour cela d'ouvrir le fichier de configuration ssh (~/.ssh/config) et d'ajouter un bloc tel que :
Host proxied
User $login
Hostname $mamachine.$fqdn
ProxyCommand ssh $gateway -W %h:%p
Et lors de la connexion, une demande de mot de passe serait faite pour les deux serveurs (sauf si on a ajouté sa clef ssh sur les deux) :
user@localhost$ scp file proxied:/dev/null
login@gateway's password:
login@mamachine's password:
file 100% 250KB 249.9KB/s 00:00
Cette technique a l'avantage d'être "fire and forget", il suffit en effet de faire la configuration une seule fois et tous les logiciels utilisant ssh utiliseront automatiquement le proxy.
SSH et les shells par defaut
Parfois, on se retrouve a travailler avec plusieurs personnes sur un compte générique (root, par exemple).
La méthode recommandée consisterait a ce que chaque personne ait un utilisateur et se su -, mais ce n'est pas parce que la méthode est recommandée qu'elle est appliquée.
En tout cas, dans ce genre …
Lire la suiteEnvoyer une fonction par ssh
Il peut être utile dans un script d'envoyer du code sur un serveur afin d'obtenir des informations.
On peut avoir un script sur la machine, envoyer un script sur la machine et l'exécuter ou, moins chiant, envoyer une fonction.
Pour celà, on code une petite fonction, comme dans n'importe quel …
Lire la suiteConnexion SSH sans mot de passe
Pour faire une connexion ssh sans mot de passe, la plupart des gens vous diront de simplement ne pas entrer de mot de passe. C'est une solution qui marche, mais qui est stupide dans 95% des cas (les 5% restants étant : ça sert pour des robots bien cachés et très …
Lire la suite