Je souhaite ouvrir une session de bureau à distance de mon ordinateur portable à mon ordinateur de bureau via mon tunnel SSH (inverse). Cela devrait être simple (ou du moins faisable), non ? Jusqu'à présent, j'utilisais Team Viewer pour me connecter au bureau à distance. J'aimerais obtenir des résultats similaires sans Team Viewer.
Voici à quoi ressemble mon tunnel SSH :
laptop--->nat--->middleman<--nat<--desktop
Toutes les machines fonctionnent sous Linux (principalement Kubuntu 12.04 ou OpenSuse 12.3). Je ne peux modifier aucun port ni modifier la configuration des routeurs nat.
Je vais décrire mon tunnel SSH car comprendre cela semble être nécessaire pour résoudre le problème VNC / bureau à distance qui est au cœur de ma question. Concernant cette étape :
middleman<--nat<--desktop
…voici comment il est établi :
autossh -M 5234 -N -f -R 1234:localhost:22 [email protected]
Concernant cette étape :
laptop--->nat--->middleman
Je peux me connecter à l'intermédiaire comme suit :
[email protected]:~$ ssh -i ~/.ssh/id_rsa [email protected]
Cependant, ce que j'ai réellement besoin de faire, c'est de me connecter directement au bureau, pas à l'intermédiaire. Pour ce faire, j'utilise netcat ("nc") sur middleman. Sur cette base, il semble que nc soit requis. J'ai donc modifié mon fichier de configuration SSH sur un ordinateur portable pour utiliser ProxyCommand et nc :
[email protected]:~/.ssh$ nano config
Le contenu est :
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 :
[email protected]:~$ 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ébat 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) via 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 :
[email protected]:~$ sudo ssh family_desktops
Client VNC :
connect to localhost:5901
Cela donne une erreur de "serveur introuvable"
J'ai essayé un certain nombre de variantes du ProxyCommand, aucune 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 vois des problèmes potentiels avec ma configuration, mais je n'ai pas été en mesure de comprendre ce qui fera que tout fonctionnera.
Connexe :Tuer tous les travaux d'arrière-plan ?PS Comme mentionné, j'ai posé plusieurs questions à ce sujet. Certains d'entre eux m'ont rapproché de la solution et forment la base de ma question actuelle. D'autres de mes questions précédentes sur ce sujet montrent simplement mon ignorance et mon incapacité à poser la question sous la bonne forme. À ce stade, cette question actuelle représente ma meilleure capacité à énoncer quel est mon problème et quelle est la solution souhaitée, mais certaines de mes autres questions sont également ouvertes. En voici une qui est pertinente.
Réponse acceptée :
Pouvez-vous essayer de faire la deuxième étape sans faire le nc? C'est-à-dire - faites le VNC avec juste le -L et -R. Je crois que le problème est que votre session netcat se reconnecte à un fichier déjà ouvert. Donc, lorsque vous faites des trucs VNC, n'utilisez pas netcat.