Retour SSH vers la machine locale à partir d'une session SSH distante


12

J'essaie de faire quelque chose d'assez inhabituel (pour moi de toute façon) avec SSH et je ne peux pas le faire fonctionner, j'espère que vous pourrez aider.

Je souhaite établir une connexion à un serveur distant à partir de mon Mac à l'aide de SSH. Jusqu'ici tout va bien. Maintenant, le bit délicat, avec la connexion au serveur distant établie, je veux ensuite initier une connexion du serveur distant BACK à la machine locale. Je sais, fou. Fondamentalement, je dois parcourir ces cerceaux pour pouvoir parcourir le serveur distant, puis renvoyer les informations de fichier à ma machine locale afin qu'elles puissent être traitées par une application sur la machine locale. J'espère que cela a du sens!

Pour le moment, si je retourne SSH sur la machine locale une fois que je suis connecté au serveur distant, le terminal restera assis là à tourner en rond, aucune erreur même avec -v.

J'essaie de découvrir où je devrais appeler en regardant la sortie de la variable $ SSH_CLIENT, mais je suis sur une connexion Internet vanille standard (pas d'adresse IP statique) Je pense que cela pourrait être la cause du problème.

Choses que j'ai établies: je suis sur un Mac (OS X 10.6.4) et j'ai la connexion à distance activée dans les préférences système / partage Si j'essaye et SSH dans mon mac à partir d'une autre machine sur LAN, je ne peux pas me connecter sans problème. Si j'essaye et SSH dans un autre serveur (pas ma machine locale) de mon serveur distant, je peux me connecter sans problème.

Donc, les faits ci-dessus me font penser que je suis clair en ce qui concerne les pare-feu, etc. sur les machines locales et distantes.

Je suis sûr que je dois manquer quelque chose de tout à fait évident ici, mais pour la vie de moi, je ne peux pas m'en occuper.

Toute aide, lien ou coup de pouce général dans la bonne direction serait grandement apprécié!


Vous pouvez parcourir le serveur distant avec ssh. Ou essayez-vous d'utiliser afs? Qu'en est-il des transferts de port et / ou sftp / scp?
Andreas Rehm

Salut. Oui, je peux me connecter et parcourir la structure de répertoires du serveur distant sans aucun problème. Je ne sais pas ce que tu veux dire, désolé. Fondamentalement, le plan est le suivant: je veux ssh dans mon serveur Linux distant à partir de mon Mac local, rechercher un fichier et ensuite pouvoir le rediriger vers le bas de la connexion établie (ou générer une nouvelle connexion basée sur celle déjà établie) pour l'ordinateur local sur lequel une application Mac lit / modifie les données avant de les renvoyer au serveur. Je ne suis pas particulièrement inquiet de la façon dont j'y parviens en termes d'implication d'autres protocoles.
2010 à 9h03

Réponses:


9

Si lorsque vous vous reconnectez à votre section locale, cela vous permet de vous connecter avant de raccrocher, ce n'est pas la réponse. Si vous n'allez pas jusque-là, vous ne retournerez probablement pas sur votre Mac (soit vous n'irez nulle part ou vous ne frapperez pas SSH sur une passerelle). Essayez un tunnel inverse (il faudra que GatewayPorts soit défini sur On dans sshd_config sur votre serveur, mais je pense que c'est par défaut):
you@yourMac$ ssh -R 2000:localhost:22 user@remoteserver
cela devrait vous permettre de vous connecter au serveur normalement, mais aussi d'ouvrir un tunnel afin que vous puissiez vous reconnecter. port 2000 (tout port supérieur à 1024 devrait fonctionner), doncyou@yourserver$ ssh -p2000 user@localhost

EDIT: le nom d'hôte a été changé en localhost


2
Vous devez utiliser user @ localhost dans la dernière commande
b0fh

1
Cela a été utile, cela m'a presque amené là où je veux être! Je peux établir la connexion avec le tunnel inverse comme ci-dessus, puis retourner ssh dans mon Mac local en utilisant ssh -p 2000 i0n @ localhost. Alors, comment puis-je y parvenir sans savoir à l'avance que j'ai besoin de cette fonctionnalité? En d'autres termes avec une connexion ssh existante et standard. Est-ce possible?
2010

Merci b0fh, j'étais en route pour me coucher quand j'ai écrit cela =) i0n - instinctivement, je veux dire que vous ne pouvez pas modifier une connexion existante pour le faire, mais PuTTY peut le faire donc il doit y avoir un moyen. Vous pouvez toujours envoyer une nouvelle connexion SSH avec un tunnel lorsque vous devez rediriger, mais je suppose que cela se fera par programmation, ce qui pourrait ne pas être une option. Recherchez Expect - si une langue peut être prête via SSH, ce sera celle-là.
James L

2

Votre machine locale est-elle accessible depuis le serveur? Pouvez-vous le cingler? Je demande cela parce que ce que vous faites devrait fonctionner si votre machine est accessible. Votre serveur est sur Internet ou en LAN, même sous-réseau?

Quoi qu'il en soit, si vous avez seulement besoin de modifier un fichier, pourquoi ne pas simplement utiliser scp pour copier le fichier sur votre machine locale? Vous pouvez utiliser ssh pour rechercher le fichier sur le serveur distant et lorsque vous avez son chemin, entrez dans votre machine locale (dans un autre terminal):

scp user@server:/path/to/file/on/server /local/path/to/save/file

Pour remettre le fichier, scp change de nouveau les chemins.

Obs: vous n'avez pas besoin de la connexion ssh initiale pour utiliser scp - il en créera une nouvelle

C'est ci-dessus si vous devez y accéder dans le terminal. Sur linux (et certainement sur Mac mais je ne sais pas comment le faire), vous pouvez monter un emplacement distant ssh dans les réseaux et utiliser la connexion comme vous utilisez un disque local (c'est sftp et la connexion est sous la forme: sftp://user@server:/path/to/mountet je suppose que c'est ce dont vous avez besoin au lieu d'une connexion de terminal distant afin que vous puissiez modifier le fichier directement avec l'application Mac.


1

Vous pouvez également y jeter un œil sshfs(vous avez besoin de MacFuse pour cela). Cela vous permet de monter des répertoires sur la machine distante et d'y accéder comme des dossiers normaux sur votre machine. En plus de cela, vous pouvez toujours sshentrer dans la machine et créer / rechercher les fichiers dont vous avez besoin. Les transférer serait alors aussi simple que de transférer des fichiers locaux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.