La tunnelisation SSH m’embrouille énormément. Je me demande si je peux le faire sous Linux.
J'ai 3 machines ..
A. My local machine at home.
B. Machine at work that I can SSH into (middle man).
C. My desktop at work that I can only SSH into from machine B.
Donc, je peux SSH de A -> B et de B -> C, mais pas de A -> C.
Existe-t-il un moyen de configurer un tunnel SSH de A à B afin que, lorsque j'exécute d'autres commandes SSH, elles fonctionnent uniquement à partir de la machine locale A? J'essaie essentiellement de cloner un dépôt Git du travail à la maison (et je ne peux pas installer Git sur la machine B).
En outre, une fois l'installation .. Comment puis-je le désactiver aussi?
Réponses:
Placez ceci dans votre
.ssh/config
fichier sur hostA (voir man 5 ssh_config pour plus de détails):Maintenant, la commande suivante va automatiquement tunneler à travers hostB
Vous voudrez peut-être ajouter des options telles que
-oCiphers=arcfour
et-oClearAllForwardings=yes
pour accélérer les choses, car le wrapping à l'ssh
intérieurssh
coûte plus cher en calcul et que l'effort supplémentaire nécessaire pour le wrapper n'a pas besoin d'être aussi sécurisé lorsqu'il tunnelise du trafic déjà chiffré.Si vous utilisez OpenSSH avant la version 5.3, l'
-W
option n'est pas disponible. Dans ce cas, vous pouvez implémenter ce qui précède en utilisant netcat (nc
):la source
-W
option doit être utilisée à la place de l'nc
option.-W
, uniquement celui sur hostA (l'origine) ou également celui sur hostB (la machine intermédiaire)?hostB
, il est possible de déclarer plusieursHost hostC
lignes au-dessus,ProxyCommand
ce qui facilite grandement l'accès à plusieurs hôtes via le serveur intermédiaire.Edit: Ceci est la mauvaise approche. Voir la réponse de l'éphémient à la place. Cette réponse fonctionnera, mais est potentiellement moins sécurisée et certainement moins impressionnante.
Il semble que vous souhaitiez une solution semblable à celle-ci:
Cela vous donnera un shell
machineb
. Laisse ça tranquille; minimiser la fenêtre du terminal.Maintenant, chaque fois que vous établissez une connexion ssh avec
localhost
, vous serez réellement connecté àmachinec
traversmachineb
. Lorsque vous avez terminé avec le tunnel, fermez simplement le terminal dans lequel vous avez exécuté la commande ci-dessus.Notez que vous aurez besoin des privilèges de superutilisateur pour exécuter la commande.
la source
-p 8022
à vos commandes ssh. Et c'est facile avec git: utilisez l'URIssh://localhost:8022/path/to/repo.git
.On dirait que vous voulez un alias de shell sur A qui provoque l'apparition de ssh sur C
la source
-t
des options à l'extérieur de ssh si vous voulez un shell interactif, carssh
suppose-T
qu'il est donné une commande.Pour un shell interactif, vous pouvez utiliser cette commande simple:
Les options -J sont pour sauter .
la source
Si votre employeur fournit un VPN, je vous conseillerais plutôt de l’utiliser.
De cette façon, vous n’aurez à configurer aucune application spécialement (même ssh), et vous pourrez voir n’importe quelle machine derrière le pare-feu. De plus, tout votre trafic sera crypté par le logiciel VPN, ce qui renforcera la sécurité de tout trafic accidentellement ou délibérément non crypté.
la source
YASS encore une autre solution simple
-f
paramètre dit à SSH d'aller en arrière-plan une fois la connexion établiesleep 10
sont nécessaires pour maintenir la connexion jusqu'à ce que la seconde commande ssh utilise le port transféré. Ensuite, le premier ssh se ferme lorsque le second ssh quitte le port transféré.vous pouvez maintenant exécuter les sessions ssh suivantes:
Une variante:
les sessions ssh suivantes peuvent être ouvertes en exécutant:
Le principal avantage de l'utilisation des paramètres -M et -S est qu'une seule connexion est ouverte d'HostA à HostC. La session suivante ne s'authentifiera pas et ne sera pas exécutée beaucoup plus rapidement.
la source
Cas particulier, plates-formes nix mixtes:
hostA (linux) -> HostB (solaris) -> HostC (linux)
Si besoin d'une application X sur hostC, et que le saut intermédiaire est sur la boîte Solaris ... dans ce cas, j'ai trouvé le netcat (nc) nécessaire sur la commande de proxy, comme suit:
hostA: ~ $ vi .ssh / config:
Puis le tunneling automatique fonctionne:
hostA: ~ $ ssh hostC
la source