Tunnel SSH pour bureau à distance via le serveur intermédiaire, partie II

10

J'ai demandé précédemment comment configurer 2 tunnels SSH à l'aide d'un serveur intermédiaire afin d'exécuter Remote Desktop à travers eux et j'ai réussi à le faire fonctionner. Maintenant, j'essaie de faire la même chose, en utilisant les mêmes machines, mais dans l'ordre inverse. Voici la configuration:

  1. PC Windows 7 dans un réseau privé, assis derrière un pare-feu.
  2. Serveur Linux d'accès public, qui a accès au PC.
  3. Ordinateur portable Windows 7, à la maison, sur lequel je souhaite réaliser Remote Desktop depuis le PC.

J'utilise Putty sur l'ordinateur portable pour créer un tunnel inverse de celui - ci au serveur Linux: R60666 localhost:3389.

J'utilise Putty sur le PC pour créer un tunnel régulier de celui - ci au serveur Linux: L60666 localhost:60666.

Je SSH vers le serveur Linux et j'exécute telnet localhost 60666 et il semble produire la sortie attendue, comme décrit dans les conseils de débogage que j'ai reçus ici .

J'essaie de se connecter Remote Desktop à partir du PC à l'ordinateur portable: localhost:60666. Il demande mon nom d'utilisateur et mon mot de passe, je clique sur OK et il verrouille ma session actuelle sur l'ordinateur portable (donc je vois l'écran d'accueil sur l'ordinateur portable au lieu de mon bureau), il affiche le message "Bienvenue" sur l'écran du Bureau à distance, puis ça devient noir. Il ne se déconnecte pas, il ne fournit aucune erreur et je ne peux effectuer aucune action sur l'écran du Bureau à distance. J'ai essayé la même configuration avec un ordinateur portable Windows XP et je rencontre les mêmes symptômes. J'ai également essayé d'utiliser des ports différents de 60666, mais rien n'a changé. Quelqu'un a-t-il une idée de ce que je fais mal?


Mise à jour : Comme l'a souligné @jwinders, je ne peux pas exécuter telnet PC 3389directement à partir du serveur Linux. Étant donné que le pare-feu Windows a une règle pour autoriser toutes les connexions sur le port 3389, je n'ai aucune idée de ce qui le bloque. Heureusement, je peux créer un tunnel SSH de la machine Linux au PC ssh 3389:localhost:3389 'domain\user'@PC.

Mihai Todor
la source
J'utiliserais sérieusement GoToMyPC à ce stade.
ewwhite
1
@ewwhite Je ne vois aucune raison pour laquelle je ne devrais pas pouvoir utiliser la configuration que j'ai décrite. Même s'il existe des solutions plus simples (qui nécessitent d'impliquer un autre tiers), je considère que c'est un défi intéressant.
Mihai Todor
1
Ceci est un très bon article, mais le problème existe toujours, et il est assez frustrant que toutes les réponses semblent manquer le point. La connexion peut être établie, mais elle s'arrête une seconde après son démarrage. Le commentaire selon lequel "la connexion via rdp perturbera cette connexion" semble cohérent avec ce qui est observé mais il ne répond pas pourquoi ni ne suggère une solution.
rhermans

Réponses:

3

J'ai rencontré le même écran noir + problème de déconnexion moi-même aujourd'hui, en utilisant du mastic comme client. J'ai finalement trouvé une solution .

Je suis passé de mastic à bitvise tunnelier et j'ai établi une S2Cconnexion avec les paramètres suivants:

listen if:0.0.0.0
listen port:13389
destination host:localhost
dest port:3389

Comme par hasard, j'utilise le serveur bitvise ssh sur mon serveur, donc cela peut juste être une combinaison heureuse pour deux produits fabriqués par le même fournisseur. Ce serait formidable si cela résout les problèmes des autres.

Pour mémoire, je ne suis d'aucune façon affilié à ces gars.

jaspe
la source
2

Je ne vois rien de mal avec vos tunnels SSH. La connexion à localhost: 60666 sur le PC devrait aboutir à localhost: 3389 sur l'ordinateur portable. Et le fait que vous obteniez un écran de connexion confirme cette évaluation.

Un peu de recherche sur l'écran blanc me mène à cet article de la base de connaissances Microsoft: http://support.microsoft.com/kb/555840 . Il indique qu'un écran vide pourrait être dû à des incompatibilités de taille MTU possibles:

Vérifiez que le serveur, le client et l'équipement réseau utilisent la taille "MTU".

Compte tenu de vos quantités de sauts de réseau, de pare-feu et ainsi de suite, la fragmentation des paquets est très probable :) La plupart des machines Windows utilisent un MTU de 1300 par défaut, tandis que la plupart des boîtiers Linux en ont 1500 (la valeur maximale autorisée pour le LAN, sans tenir compte des trames jumbo ). Vous pouvez essayer de les réduire pour réduire la fragmentation.

Voir également:

basvdlei
la source
1
Merci pour l'astuce, mais malheureusement, ça ne fait pas l'affaire. Le MTU sur mon ordinateur portable et mon PC est défini sur 1500 ( netsh interface ipv4 show subinterfaces) et ping linux_server -f -l 1472réussit sur les deux machines. À titre de test, j'ai essayé de régler le MTU sur le PC à 1300, mais cela n'a pas aidé. J'ai également essayé de le changer sur l'ordinateur portable, mais en vain :( Je me demande s'il existe un moyen "plus intelligent" de déboguer ce problème ...
Mihai Todor
1

Un VPN ne serait-il pas plus approprié? OpenVPN est super simple à configurer. Voici un exemple de configuration et quelques liens pour vous guider dans le processus de création de certificat.

Configurez simplement l'intermédiaire pour qu'il soit l'hôte, et les invités peuvent se connecter et continuer à communiquer entre eux.

apt-get install openvpn
mkdir /etc/openvpn/easy-rsa
mkdir -p /etc/openvpn/ccd/client_server
touch /etc/openvpn/ipp.txt
cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca 
./build-key-server server
./build-dh
cd /etc/openvpn/easy-rsa/keys
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt -certfile ca.crt

Ensuite , créez un nouveau fichier /etc/openvpn/client_server.confet de mettre ce qui suit dans, en changeant le , SERVER_IP_ADDRESSselon le cas

local SERVER_IP_ADDRESS
port 8443
proto udp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
pkcs12 /etc/openvpn/easy-rsa/keys/server.p12
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
ifconfig-pool-persist /etc/openvpn/ipp.txt
server 192.168.100.0 255.255.255.0
client-config-dir /etc/openvpn/ccd/client_server
ccd-exclusive
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
reneg-sec 0
client-to-client

Créez ensuite une clé par utilisateur qui va se connecter et créez le fichier de configuration dans le répertoire ccd

./build-key-pkcs12 [email protected]
echo "ifconfig-push 192.168.100.2 255.255.255.0" > /etc/openvpn/ccd/client_server/[email protected]

L'adresse IP DOIT être adaptée à un sous-réseau / 30 (voir http://www.subnet-calculator.com/cidr.php ), car il n'y a que 2 adresses disponibles (serveur et client) par connexion. Votre prochaine adresse IP client disponible serait donc 192.168.100.6 et ainsi de suite.

Vous disposez alors désormais d'adresses IP statiques par utilisateur se connectant.

Fournissez ensuite le the [email protected]fichier à l'utilisateur final et utilisez le fichier de configuration suivant

client
dev tun
proto udp
remote SERVER_IP_ADDRESS 8443
pkcs12 [email protected]
resolv-retry infinite
nobind
ns-cert-type server
comp-lzo
verb 3
reneg-sec 0
Ben Lessani - Sonassi
la source
1
Eh bien, oui, cela pourrait fonctionner, mais je n'ai pas l'accès requis sur la boîte Linux pour installer des trucs :( Pourtant, je trouve le tout extrêmement frustrant, car cela fonctionne dans un sens et il échoue dans l'autre.
Mihai Todor
1

Si vous exécutez la session ssh dans le compte d'utilisateur (à l'aide d'un programme tel que putty.exe), lorsque vous essayez de vous connecter via rdp, cela interrompra cette connexion, provoquant la rupture de la session rdp. Ce que vous devez faire est d'exécuter le tunnel ssh en tant que service qui ne sera pas interrompu.

marque
la source
1
Intéressant. Je n'ai plus accès à cette configuration, donc je ne pourrai pas tester votre théorie, mais ce serait bien d'obtenir des détails supplémentaires à ce sujet pour d'autres personnes confrontées au même problème. Avez-vous une référence pour vos réclamations? Que voulez-vous dire par la rupture de la connexion par Putty?
Mihai Todor
0

je pense que vous pouvez faire toutes les conf depuis votre ordinateur portable

configurer une connexion mastic à la boîte linux sur votre ordinateur portable. puis dans «connexion»> «SSH»> «tunnels», mettez 60666 dans le champ «port source» et assurez-vous que le bouton radio Local est sélectionné. dans la «destination», vous entrez win7-box-name-or-ip: 3389.

enregistrez tout cela et cela devrait vous permettre d'ouvrir une session de mastic sur linux-box qui crée automatiquement un trafic de transfert de tunnel vers localhost (votre ordinateur portable): 60666 à win7: 3389

si vous faites cela sur la ligne de commande, cela devrait être quelque chose comme

ssh -L60666:win7:3389 linux-box
jwinders
la source
1
Voyons donc ... Cette configuration devrait transférer le port 3389 du PC vers le port 60666 sur l'ordinateur portable. Je ne vois pas comment cela fonctionnera, cependant, et, en tout cas, cela ne me permettra pas de faire du bureau à distance sur l'ordinateur portable ... Pour autant que je ne puisse pas le dire, cela doit être fait en utilisant 2 tunnels.
Mihai Todor
avec cette conf, vous ne pouvez pas rdp vers localhost: 60666 sur votre ordinateur portable?
jwinders
Non, ça ne marche pas.
Mihai Todor
1
Ça ne marche pas. La seule façon dont je suis capable de le faire est d'établir d'abord un tunnel de la boîte Linux vers le PC ssh 3389:localhost:3389 'domain\user'@PC, puis de le faire telnet localhost 3389sur la boîte Linux.
Mihai Todor
1
C'est un point intéressant, mais je ne suis pas sûr de comprendre ce qui le bloque. Le pare-feu Windows a une règle qui autorise explicitement toutes les connexions sur le port 3389 à partir du domaine.
Mihai Todor
0

J'ai constaté que si tous les utilisateurs n'étaient pas complètement déconnectés de la machine, j'obtiendrais un écran vide après avoir entré les informations d'identification. Donc, assurez-vous de toujours vous déconnecter.

Jonathan Lloyd
la source
2
Bon essai, mais toujours pas de chance :(
Mihai Todor