Transfert X sur SSH de Mac vers une boîte Linux

9

J'ai besoin d'exécuter des applications Mac sur une machine Mac distante et de l'afficher sur le serveur X d'une machine Linux locale (de nombreux articles sur Internet semblent détailler comment feriez-vous dans le sens inverse).

$ ssh -X mac-box
$ cd /Developer/Applications/Xcode.app
$ ./Contents/MacOS/Xcode
Sat Oct  3 20:41:26 mac-box.local Xcode[15634] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
^C
  1. Ma $DISPLAYvariable semble être vide. À quoi devrait-il ressembler pour que le transfert fonctionne correctement?
  2. Puis-je exécuter des applications OSX de cette façon?
Alex B
la source

Réponses:

6

Si Aqua d'un Mac était X, alors vous n'auriez pas besoin d'exécuter X (XQuartz) pour démarrer d'autres programmes X sur un Mac ...

Donc: non, je pense que vous ne pouvez pas faire ça.


Mais, pour vous aider à démarrer, j'essaierais d'abord de transférer de vrais programmes X sur votre machine Linux:

  • Sur votre Mac: installez XQuartz si vous ne l'avez pas encore fait (comme XQuartz 2.3.4 à partir d'installations optionnelles sur le DVD OS X 10.6, ou téléchargez la dernière version du projet XQuartz ).

  • Sur votre Mac: passez X11Forwarding noà X11Forwarding yes(et assurez-vous qu'il n'y a pas de hachage ( #) devant cette ligne) en utilisant sudo vi /private/etc/sshd_configou en utilisant une sedcommande d' Activer le transfert X11 d'Apple . Cela garantira également que la DISPLAYvariable est définie automatiquement.

  • Sur votre machine Linux:

    ssh -Y utilisateur @ mac-box
    xterm
    

(Certaines étapes suivantes peuvent alors inclure la recherche sur Google Xephyr(ou les anciennes Xnest). Et si vous rencontrez des problèmes de clavier: Google xmodmap, ou utilisez xevpour le débogage. Ou pour les problèmes de police: Google xfset xset +fp tcp/mac-box:7100. Mais je doute que vous puissiez exécuter les programmes Aqua de cette façon.)

Arjan
la source
1
Malheureusement, vous avez raison. Je ne peux pas exécuter Xcode et le simulateur iPhone via SSH, même si je peux exécuter xterm. De plus, je n'avais pas besoin d'installer XQuartz sur l'installation stock 10.6.
Alex B
@AlexB Quelque chose a-t-il changé au cours des 10 dernières années?
Muhammad bin Yusrat le
4

Il semble que votre objectif principal ici soit de visualiser les applications Mac en cours d'exécution sur une machine Linux. Arjan a raison, le transfert X ne fonctionnera pas pour cela.

Vous devez activer le partage d'écran dans le volet Partage des Préférences Système. Cela activera un serveur VNC. En utilisant un client VNC sur votre machine Linux, vous pourrez voir votre bureau Mac. Cet article montre comment le configurer côté mac (étapes 1 à 3), continue (un peu trop) à propos de la configuration des dyndns et de l'ouverture des ports dans une station de base de l'aéroport, puis a un tout petit peu en bas sur la configuration du côté client (étapes 20 à 21).

Doug Harris
la source
Et il existe également de nombreux programmes qui ne partagent qu'une seule application (plutôt que l'ensemble du bureau). Je pense que l'on peut même le faire en utilisant le dernier Skype, multiplateforme. (Je ne sais pas si Skype permet également de contrôler la machine distante, plutôt que de jeter un œil à son écran.)
Arjan
J'aimerais pouvoir éviter de l'utiliser. Il semble que VNC reste la seule alternative à ce stade.
Alex B
-2

Utilisez simplement

su -lm <usrname-to-proxy-for>

pour entrer dans un shell où aucun problème X11 ne se produira. Voir les pages de manuel pour plus de détails sur l'option '-m'.

BGP Acharya
la source
-m Laissez l'environnement non modifié. Le shell invoqué est votre shell de connexion et aucun changement de répertoire n'est effectué. - comment est-ce lié à la question?
Arjan