2 votes

Se connecter au port via un tunnel ssh fonctionnel depuis IntelliJ ?

Je travaille sur une application serveur résidant sur un serveur Ubuntu 14.x distant. Cette application écoute sur le port 8000 de la machine distante. Je dispose d'une session SSH correcte, ce qui me permet de me connecter à la machine, et j'ai également la possibilité d'utiliser sudo.

J'ai IntelliJ sur mon système Linux local dans mon bureau et il fonctionne également sous ubuntu 14.x. J'ai besoin qu'il se connecte au port 8000 sur le boîtier distant pour une session de débogage à distance d'IntelliJ. Le port 8080 sur le boîtier distant n'est pas disponible publiquement.

Existe-t-il un utilitaire, ou une astuce de tables IP (sur le boîtier distant), ou une astuce SSH, etc. qui puisse fournir un port local sur mon système pour qu'IntelliJ s'y connecte, et qui ensuite proxye/transfère le trafic vers et depuis ce port via le tunnel SSH vers le port 8000 sur le système distant ? En d'autres termes, il fera croire à IntelliJ sur mon ordinateur local qu'il parle directement à l'application serveur sur l'ordinateur distant, alors qu'en réalité la connexion entre eux passe par le tunnel SSH actif ?

Je me souviens avoir fait quelque chose comme ça il y a longtemps mais j'ai complètement oublié comment, et à l'époque le client distant était une boîte Windows donc la solution était pour les systèmes Windows. Cette fois, le système local et le système distant sont tous deux des serveurs Ubuntu 14.x.

4voto

Daniel F Points 944

Configurer un tunnel de transfert sur la machine locale

autossh -f -N -L 0.0.0.0:8000:localhost:8000 username@remotebox

0.0.0.0:8000 est ce à quoi IntelliJ se connectera, il pensera que l'application web est exécutée sur la machine locale, liée à chaque interface locale et fonctionnant sur le port 8000.

localhost:8000 est l'endroit où le tunnel se connectera, dans le contexte de la remotebox. localhost n'est plus le localhost sur lequel vous travaillez, mais le localhost à l'intérieur de la machine remotebox. Là, elle se connectera au port 8000, qui est effectivement votre application web, dans le contexte de l'utilisateur. username .

autossh est une enveloppe pour ssh qui se charge de se reconnecter automatiquement en cas de perte de connexion.

Si vous utilisez un port non standard pour ssh sur la remotebox, utilisez l'option -P <PORT> pour s'y connecter.

Cette réponse vaut la peine d'être examinée si la réponse ci-dessus ne fait pas ce que vous voulez : https://unix.stackexchange.com/a/118650/61956 à partir de là, je vous ai juste expliqué le premier diagramme. J'ai préfixé le port local avec l'interface 0.0.0.0 Je pense que la valeur par défaut est localhost lorsque vous l'omettez, ce que vous pouvez faire si vous le souhaitez. Il serait peut-être plus sûr de supprimer le 0.0.0.0: partie, car si localhost est la valeur par défaut, alors personne sur votre réseau ne peut utiliser votre machine pour utiliser ce tunnel ssh. Sinon, pour eux 192.168.10.10:8000 serait un point d'entrée vers l'application web distante si 192.168.10.10 est l'IP de la machine sur laquelle vous travaillez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X