Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

OpenSSH et LocalCommand

3 réponses
Avatar
Etienne
Salut à tous,

J'essaye vainement de me simplifier la vie pour mettre en place un
système d'assistance aux utilisateurs basé sur VNC et SSH. En fait,
pour être exact, la solution fonctionne, mais je n'arrive pas à la
réduire à une seule commande.

Mon ~/.ssh/config est correctement écrit pour créer un tunnel sécurisé
jusqu'à la machine de l'utilisateur, et je n'ai plus qu'à lancer:

ssh user@remotemachine 'x11vnc -localhost -display :0'

puis:

vncviewer localhost:5900

et tout fonctionne.

Mais je voulais aller plus loin et réduire le tout à une seule ligne,
en utilisant l'option "LocalCommand" de ssh, qui (théoriquement) lance
une commande quand la connection a réussi. J'ai d'abord ajouté:

"LocalCommand vncviewer localhost:5900"

ce qui n'a pas lancé vncviewer. Puis j'ai réalisé que peut-être x11vnc
n'était pas encore prêt à l'autre bout du tunnel quand vncviewer était
lancé. J'ai donc changé mon .ssh/config comme suit:

"LocalCommand sleep 5 && vncviewer localhost:5900"

mais ça ne marche pas mieux. Visiblement, en lançant ssh avec -vvv, je
vois que cette ligne du fichier de config est lue et acceptée, mais
pas moyen de savoir si vncviewer a été lancé ni qu'est-ce qu'il retourne
en cas d'échec.

Une idée, quelqu'un ? Ne serait-ce que pour diagnostiquer plus finement ?

Merci de votre intérêt pour ma question.

PS: Pas bien sûr que ça ait une influence quelconque, mais ma machine
fait tourner OpenBSD, et l'utilisateur est sous Debian.

--
Étienne

3 réponses

Avatar
Cyrille Lefevre
Le 09/01/2012 16:03, Etienne a écrit :
Salut à tous,

J'essaye vainement de me simplifier la vie pour mettre en place un
système d'assistance aux utilisateurs basé sur VNC et SSH. En fait,
pour être exact, la solution fonctionne, mais je n'arrive pas à la
réduire à une seule commande.

Mon ~/.ssh/config est correctement écrit pour créer un tunnel séc urisé
jusqu'à la machine de l'utilisateur, et je n'ai plus qu'à lancer:

ssh 'x11vnc -localhost -display :0'



Bonjour,

il doit te manquer qqc comme -R5900:localhost:5900, non ?

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Avatar
Etienne
Ce bavard de Cyrille Lefevre vient de nous dire:

Bonjour,

J'essaye vainement de me simplifier la vie pour mettre en place un
système d'assistance aux utilisateurs basé sur VNC et SSH. En fait,
pour être exact, la solution fonctionne, mais je n'arrive pas à la
réduire à une seule commande.

Mon ~/.ssh/config est correctement écrit pour créer un tunnel sécurisé
jusqu'à la machine de l'utilisateur, et je n'ai plus qu'à lancer:

ssh 'x11vnc -localhost -display :0'



Bonjour,

il doit te manquer qqc comme -R5900:localhost:5900, non ?



Je voulais éviter de donner des détails inutiles pour ne pas compliquer
ma question. :-) Le tunnel est bien créé, la config complète pour cette
machine est ci-dessous:

Host remotemachine
HostName remotemachine
IdentityFile ~/.ssh/
ProxyCommand ssh remote-firewall nc %h %p 2> /dev/null
LocalForward 5900 localhost:5900
LocalCommand sleep 5 && vncviewer localhost:5900
ForwardX11 no
ForwardAgent yes
Protocol 2

Mais je répète, c'est la ligne "LocalCommand" qui me pose problème. Elle
devrait lancer mon vncviewer une fois la connection établie, mais ne le
fait pas. Alors que quand je l'exécute moi-même, une dizaine de secondes
après avoir lancé "ssh 'x11vnc ...'", aucun problème,
l'interface de la machine distante apparait immédiatement.

Une autre idée ?

--
Étienne
Avatar
Stephane Chazelas
2012-01-10 14:28:07 +0000, Etienne:
[...]
Host remotemachine
HostName remotemachine
IdentityFile ~/.ssh/
ProxyCommand ssh remote-firewall nc %h %p 2> /dev/null
LocalForward 5900 localhost:5900
LocalCommand sleep 5 && vncviewer localhost:5900
ForwardX11 no
ForwardAgent yes
Protocol 2

Mais je répète, c'est la ligne "LocalCommand" qui me pose problème. Elle
devrait lancer mon vncviewer une fois la connection établie, mais ne le
fait pas.


[...]

Il semble te manquer le PermitLocalCommand:

ssh -o PermitLocalCommand=yes -o LocalCommand='echo test' localhost
vs
ssh -o LocalCommand='echo test' localhost

--
Stephane