Je souhaite ouvrir une session de bureau à distance de mon ordinateur portable vers le bureau via mon tunnel SSH (inversé). Cela devrait être simple (ou du moins faisable), non? Jusqu'à présent, j'utilisais Team Viewer pour me connecter au bureau distant. J'aimerais obtenir des résultats similaires sans Team Viewer.
Voici à quoi ressemble mon tunnel SSH:
laptop--->nat--->middleman<--nat<--desktop
Toutes les machines tournent sous Linux (principalement Kubuntu 12.04 ou OpenSuse 12.3). Je ne peux changer aucun port ni faire de changements de configuration sur les routeurs nat.
Je décrirai mon tunnel SSH parce que la compréhension qui semble nécessaire pour résoudre le problème VNC / bureau à distance qui est au cœur de ma question. Concernant cette jambe:
middleman<--nat<--desktop
... voici comment cela s'établit:
autossh -M 5234 -N -f -R 1234:localhost:22 [email protected]
Concernant cette jambe:
laptop--->nat--->middleman
Je peux me connecter à un intermédiaire comme suit:
me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman
Cependant, ce que je dois réellement faire, c'est me connecter directement au bureau, pas à l'intermédiaire. Pour ce faire, j'utilise netcat ("nc") sur un intermédiaire. Sur cette base, il apparaît que nc est requis. J'ai donc édité mon fichier de configuration SSH sur un ordinateur portable pour utiliser ProxyCommand et nc:
me@laptop:~/.ssh$ nano config
Les contenus sont:
Host family_desktops
ProxyCommand ssh middleman_fqdn nc localhost %p
User admin
PasswordAuthentication no
IdentityFile ~/.ssh/my_id_rsa
Où middleman_fqdn
est comme "middleman.com"
Ensuite, je me connecte simplement au "bureau" en une seule étape:
me@laptop:~$ ssh family_desktops -p 1234
(J'ai obtenu ce travail sur la base de l'aide ici et ici et d'autres questions connexes que j'ai posées. J'ai posé une tonne de questions sur ce sujet parce que je me débattais avec depuis de nombreuses semaines.)
Avec cette connexion SSH, j'atteins un shell entièrement fonctionnel sur mon ordinateur, étiqueté desktop
. Parfait.
Maintenant, j'ai juste besoin d'une solution de bureau à distance de type VNC (ou TeamViewer) sur ce tunnel SSH. Comment?
Voici ce que j'ai essayé jusqu'à présent:
intermédiaire <- nat <- bureau
autossh -M 5235 -N -f -R 1235:localhost:5901 [email protected]
avec cette connexion établie:
x11vnc -autoport 5901
Je regarde pour m'assurer qu'il se connecte au port 5901, ce qu'il fait.
ordinateur portable ---> nat ---> intermédiaire <- nat <- ordinateur de bureau
ordinateur portable ~ / .ssh / config:
Host family_desktops
ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
User admin
PasswordAuthentication no
IdentityFile ~/.ssh/my_id_rsa
Configuration du tunnel:
me@laptop:~$ sudo ssh family_desktops
Client VNC:
connect to localhost:5901
Cela donne une erreur de "serveur non trouvé"
J'ai essayé un certain nombre de variantes de la ProxyCommand, aucune d'entre elles n'a réussi. Évidemment, je devine quels paramètres devraient être dans ProxyCommand et lesquels devraient être sur la ligne de commande ssh. Je peux voir des problèmes potentiels avec ma configuration, mais je n'ai pas été en mesure de comprendre ce qui fera que tout fonctionnera.
PS Comme mentionné, j'ai posé plusieurs questions à ce sujet. Certains d’entre eux m’ont rapproché de la solution et constituent la base de ma question actuelle. D'autres de mes questions antérieures sur ce sujet montrent simplement mon ignorance et mon incapacité à poser la question sous la bonne forme. À ce stade, cette présente question représente ma meilleure capacité à énoncer quel est mon problème et quelle est ma solution souhaitée, mais certaines de mes autres questions sont encore ouvertes. En voici une qui est pertinente.
la source
desktop
trouve derrière un routeur NAT etlaptop
derrière un routeur NAT.Réponses:
Pouvez-vous essayer de faire la deuxième étape sans faire le nc? C'est-à-dire - faites le VNC avec juste -L et -R. Je crois que le problème est que votre session netcat se connecte à un déjà ouvert. Donc, lorsque vous faites le truc VNC, n'utilisez pas netcat.
la source
Au lieu de ProxyCommand, vous devez définir "gatewayports yes" pour votre intermédiaire sshd.conf.
Après l'avoir fait fonctionner, en savoir plus sur les paramètres plus sécurisés des ports de passerelle.
la source