2013-11-20 7 views
8

Ich habe Probleme mit der Einrichtung X11 Forwarding auf vagrant VM.SSH in Vagabund mit X-Server einrichten

Ich verwende Xming für X-Server und PuTTY als meinen SSH-Client. Diese

ist das, was ich bekomme, wenn ich vagrant ssh-config laufen:

Host default 
    HostName 127.0.0.1 
    User vagrant 
    Port 2200 
    UserKnownHostsFile /dev/null 
    StrictHostKeyChecking no 
    PasswordAuthentication no 
    IdentityFile C:/Users/MyName/.vagrant.d/insecure_private_key 
    IdentitiesOnly yes 
    LogLevel FATAL 
    ForwardAgent yes 
    ForwardX11 yes 

Mein PuTTY hat X11-Weiterleitung aktiviert und X-Display Standort auf 0.0.

Wenn ich echo $DISPLAY mache bekomme ich keine Antwort.

Ich bin unsicher, was ich falsch konfiguriert habe. Ich folgte dem following advice bei der Einrichtung meines PuTTY-Clients. Wenn es eine einfachere Möglichkeit gibt, VM mit X11-Weiterleitung einzurichten, lassen Sie es mich wissen.

Als Referenz sind diese Inhalte meiner Vagrantfile.

VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 

    config.ssh.forward_agent = true 
    config.ssh.forward_x11 = true 

end 
+0

Dies wird durch die Verwendung von Cygwin als X-Server über diese [Beratung] (http://x.cygwin.com/docs/ug/setup.html) gelöst. – Matt

+0

Könnten Sie es bitte als Antwort unten hinzufügen und akzeptieren? Kommentare sind nicht der beste Ort für richtige Antworten. –

+0

@RadekSimko Fertig. Danke für das Aufzeigen! – Matt

Antwort

3

Install Cygwin mit den folgenden Paketen, das Problem zu lösen, wie in diesem website angegeben:

  • Xorg-Server
  • xinit
  • xorg-docs (zur Dokumentation)
  • openssh (falls dies vorher nicht installiert wurde)

Dann laden Sie das Fenster mit startxwin vom Cygwin-Terminal.

Eine Anmerkung, die ich später entdeckte, dass es besser ist, in vagrant ssh mit dem folgenden Befehl:

vagrant -Y ssh

als:

vagrant -X ssh

diese in nicht vertrauenswürdigen durchgeführt wird, Modus wie in diesem answer und nach einer Weile abläuft.

6

Ich hatte ein sehr ähnliches Problem, aber in meinem Fall war es ein Problem mit der Vagrant VM. Hier sind einige Dinge zu überprüfen:

  • X11Forwarding Bedürfnisse yes in /etc/ssh/sshd_config
  • Aktivieren ausführliche Protokollierung für ssh eingestellt werden (vagrant ssh -- -vvv -X in Linux, Putty scheint auch eine -v Befehlszeilenparametern zu haben) und suchen nach interessanten Mitteilungen.

Mit meiner Vagrant VM ergab diese die folgende Meldung:

debug1: Remote: No xauth program; cannot forward with spoofing 

ein Paket nach der Installation, die xauth (xorg-xauth, xorg-x11-xauth oder ähnliches) liefert, vagrant ssh -- -X fein gearbeitet.

1

Verwenden Sie "startxwin", um den Cygwin X-Server auszuführen. Verwenden Sie putty oder den cygwin ssh-Client, um ssh auf Ihrer virtuellen Gastmaschine zu starten.

Wenn Sie cygwin ssh verwenden, exportieren Sie DISPLAY =: 0, bevor Sie ssh ausführen (zB "vagrant ssh - -vvv -X").

Für putty: Führen Sie "startxwin - -listen tcp" aus, aktivieren Sie die ssh-X11-Weiterleitung in der Putty-Verbindungskonfiguration, setzen Sie "X display location" auf "localhost: 0" und legen Sie den korrekten Pfad der .Xauthority-Datei fest (Durchsuchen, es ist wahrscheinlich in Ihrem Home-Verzeichnis; startxwin Ausgabe wird Ihnen sagen, wo).

Vielleicht msys2 ssh (die vagrant Standardinstallationsumgebung ist msys2 aber vagrant funktioniert auch unter cygwin) mit dem Cygwin X Server nicht verwenden. (Siehe Details für weitere Informationen darüber, warum)

Details:

Wenn Sie erhalten „/tmp/.X11-unix/X0 verbinden: Keine solche Datei oder das Verzeichnis“ (unter ssh ausführlicher Modus) oder Kitt Fehler " PuTTY X11-Proxy: Verbindung zum weitergeleiteten X-Server kann nicht hergestellt werden: Netzwerkfehler: Verbindung verweigert ", versuchen Sie tcp-Sockets anstelle der Standard-Unix-Domain-Sockets zu verwenden.

Wenn Sie Ihren Cygwin X Server starten, gehen Sie "X -listen tcp -multiwindow" (Multifenster ist optional - es öffnet sich für jede App ein neues Fenster).

Bei Verwendung von openssh "ssh" von der Befehlszeile: Bevor Sie "vagrant ssh - -vvv -X" gehen, gehen Sie "Export DISPLAY = localhost: 0" (nicht ": 0" aber "localhost: 0" so verwendet es tcp). Ich benutze git bash, die msys2 verwendet, die nicht korrekt mit meinem cygwin X-Server über emulierte Unix-Domain-Sockets zu kommunizieren scheint. Aber wenn ich "vagrant ssh - -X" unter meiner cygwin-Eingabeaufforderung (mit DISPLAY =: 0 für Unix-Domain-Sockets) verwende, funktioniert es.

Große Info Quelle: http://dustwell.com/how-x-over-ssh-really-works.html

Sie können aber auch "config.ssh.forward_x11 = true" zu Ihrem Vagrantfile hinzuzufügen. Ich denke, das setzt X11Forwarding in/etc/ssh/sshd_config, wenn die virtuelle Gastmaschine eingerichtet wird oder "vagrant reload" ausgeführt wird. - https://coderwall.com/p/ozhfva/run-graphical-programs-within-vagrantboxes

Update: Es wird nicht empfohlen, X ohne xauth-Sicherheit auszuführen (wie oben gezeigt). Es ist nicht sicher. Zum Beispiel können andere Computer im selben LAN über tcp eine Verbindung zu Ihrem x-Server herstellen und Ihre Tasten drücken, indem Sie xkeys verwenden. Verwenden Sie "startxwin" anstelle von X direkt, so dass es die Option "-auth" von XWin verwendet. Das macht es schwierig für mich, meine msys2 ssh dazu zu bringen, X auf meinen cygwin X Server umzuleiten. Das ssh-Protokoll während der Verbindung besagt, dass es den xauth-Befehl nicht finden kann - weil es in meiner msys2-Umgebung nicht vorhanden ist. Cygwin ssh X-Umleitung funktioniert immer noch gut. Putty funktioniert einwandfrei, solange Sie den Dateipfad .Xauthority (wahrscheinlich in Ihrem Home-Verzeichnis) in der Putty-Session-Konfiguration festlegen.

entdeckte ich die TCP/Unix-Domain-Socket Problem/Lösung tatsächlich in der Cygwin-FAQ ist (diese FAQ sehr hilfreich ist und eine Menge Informationen hat):

6.7. Von PuTTY weitergeleitete X-Sitzungen können keine Verbindung herstellen. Nicht-cygwin lokale X-Clients können keine Verbindung herstellen.

Der X-Server verwendet jetzt standardmäßig -nolisten tcp, wodurch die Sicherheit des X-Servers erhöht wird, indem kein TCP/IP-Socket, sondern nur ein lokaler Socket (UNIX-Domäne) geöffnet wird. Nicht-Cygwin-Anwendungen können keine Verbindung zu diesem Socket herstellen.

https://x.cygwin.com/docs/faq/cygwin-x-faq.html

Verwandte Themen