42 votes

Transférer une connexion TCP/IP à travers une connexion Bureau à distance

Il y a un serveur Windows distant sur un réseau privé auquel je peux me connecter via Connexion Bureau à distance. J'aimerais pouvoir établir des connexions TCP/IP depuis mon ordinateur vers d'autres ordinateurs sur le réseau de ce serveur.

La Connexion Bureau à distance permet de partager des imprimantes, des lecteurs et d'autres ressources locales via la connexion. Y a-t-il un moyen de "tunnéliser" une connexion TCP/IP via la RDC?

J'aimerais quelque chose de similaire au renvoi de port fourni par SSH. Je ne vois aucun moyen de le faire via la RDC, mais j'espère que la capacité est là et que je ne le sais tout simplement pas.

21voto

chernevik Points 1141

Si vous utilisez rdesktop côté client (au lieu du client Windows natif), vous pouvez utiliser rdp2tcp.
Cela vous permet de gérer la redirection des ports TCP via une connexion RDP.

7voto

Charles Gargent Points 709

Je ne pense pas que vous puissiez faire un tunnel via RDP, cependant, si vous vous connectez en RDP au serveur et que vous initiez ensuite un tunnel SSH vers votre client, vos machines seront connectées par SSH. Vous pouvez transférer à la fois les ports distants et locaux pour que tout se fasse à l'envers.

MODIFIER

Si vous installez un serveur SSH sur votre PC client et le configurez pour accepter les connexions SSH sur le port 443, alors vous pourrez vous connecter au serveur SSH (votre client) depuis votre serveur (en utilisant une connexion client SSH) et vous n'aurez pas besoin d'ouvrir de ports (le port 443 devrait déjà être ouvert pour le HTTPS).

3voto

wolf Points 31

Je n'ai rien trouvé de mieux que rdp2tcp à utiliser avec un serveur Windows qui n'autorisait pas l'accès administratif ou le routage réseau interface-à-interface. Vous devrez appliquer le patch OOP sur votre rdesktop pour que cela fonctionne (allez aux dernières pages pour trouver celui correspondant à une version récente de rdesktop). J'ai utilisé le compilateur MinGW pour compiler l'extrémité Windows du tunnel.

La documentation est également excellente et concise.

Ce qui peut sembler être un point mineur : Si vous utilisez un nom 'addin' avec un '-' dedans, rdesktop échoue à parser correctement la ligne de commande. Il s'agissait peut-être d'un bashism qui nécessitait un échappement approprié, mais je ne suis pas certain.

Notez que autant que je puisse comprendre, il ne s'agit pas d'un tunnel TCP "vrai" qui "voit" les unités de données du protocole TCP car ce ne serait pas possible sans privilèges administratifs du côté Windows. C'est plutôt comme un proxy socks avec un point d'extrémité préconfiguré (pas très conséquent toutefois). Il comporte également un proxy socks réel si cela vous intéresse.

J'ai facilement géré une session SSH interactive avec ça, mais ça ne tenait pas pour les transferts de fichiers SSH (affichait 'virtual channel disconnected' dans la console rdesktop (rdp2tcp s'exécute en tant que processus enfant avec stdout/stdin dupliqué/pipé par rdesktop, mais sans changement du stderr)). Il y avait une constante dans le code appelée RDP2TCP_PING_TIMEOUT qui ressemblait à un timeout d'keepalive pour maintenir le tunnel. En supposant une sorte d'étranglement dans le réseau intermédiaire, augmenter cela de 5s à 900s semblait avoir fait l'affaire, et ça a tenu pour des transferts allant jusqu'à 100 MB (ça a pris environ 15 minutes sur ce réseau particulier).

Cependant, rdp2tcp a été trouvé à recevoir un SIGPIPE, qu'il prétendait avoir reçu en raison d'une rupture dans le tuyau rdesktop, bien que je n'ai trouvé aucune preuve de cela se produisant de la part du code rdesktop, ou de la sortie de 'lsof' qui ne montrait aucun changement dans le nombre de tuyaux pour rdesktop avant et après le déclenchement de SIGPIPE.

Si cela se produit, vous devrez redémarrer rdesktop, et éventuellement l'extrémité Windows du tunnel aussi. Vous pouvez utiliser rsync et reprendre les transferts de fichiers, et peut-être automatiser tout le processus de récupération.

Tout ceci était en supposant Linux comme votre client. Je n'ai pas essayé le rdesktop patché sur Windows en raison de quelques problèmes non liés que j'ai eu avec Cygwin/X. Je suppose que cela devrait fonctionner.

Aussi, mon expérience était avec SSH, mais les transferts de fichiers volumineux par tout autre moyen risquent de rencontrer les mêmes problèmes.

-1voto

Je pense que vous pouvez utiliser le renvoi de port local pour RDP :

A -> B -> C

A est Windows ou Mac, B est Linux et C est Windows. Si vous voulez vous connecter en RDP à C depuis A et que C n'est pas directement accessible depuis A, alors sur A

ssh username@B -L 7777:C:3389

Ouvrez le client RD, puis pointez 127.0.0.1:7777 en utilisant le nom d'utilisateur et le mot de passe de C. J'ai essayé cela depuis Mac mais cela devrait fonctionner pour Windows.

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