Mit "rdesktop" auf Windows zugreifen
Übersicht
Mit Hilfe von rdesktop kann von Linux aus auf einen Windows-Desktop gearbeitet werden. Auf den Windows-PCs müssen dazu die "Windows Terminal Services" gestartet sein. Diese sind verfügbar für die Windows-Versionen Server 2000, Server 2003, Server 2008, XP, Vista und NT Server 4.0. Die "Windows Terminal Services" verwenden das Remote Desktop Protocol (RDP) über TCP, Standard-Port ist 3389.
Anders als bei VNC wird bei RDP eine eigene Session erzeugt, die nicht mit der Ausgabe am lokalen Bildschirm eines Windows-Rechners identisch ist. Dadurch können mehrere User per RDP auf einen Windows-PC zugreifen, allerdings nur, wenn die entsprechenden Lizenzen vorhanden sind.
Homepage: http://www.rdesktop.org/
Lizenz: GPL
Anmelden mit rdesktop
Die simpelste Methode ist der Aufruf in Form von
rdesktop -k de Rechnername_oder_IP
die Option -k legt das Tastatur-Layout fest, hier also das Deutsche.
Ein Nachteil dieses Aufrufs: Die Größe des Fensters des Remote-Desktop-Fensters ist mit 800 mal 600 Pixeln recht klein.
Mit dem zusätzlichen Parameter -g kann die gewünschte Auflösung genau definiert werden:
rdesktop -g 1000x800 -k de Rechnername_oder_IP
Soll sich im Vollbild-Modus (-f) und ohne interaktive User/Passwort-Eingabe angemeldet werden, kann folgendes eingegeben werden:
rdesktop -f -k de -u Windows-User -p Passwort Rechnername_oder_IP
Nach diesem Aufruf nimmt rdesktop den kompletten Desktop ein, und, oh Schreck, es scheint, als ob man nicht mehr auf den Linux-Desktop kommt!
Lösung: Die Tasten Strg+Alt+Return(Umbruch) gleichzeitig drücken, dann ist rdesktop wieder in einem Linux-Fenster. Erneutes Drücken auf Strg+Alt+Return befördert rdesktop wieder in den Vollbild-Modus. Damit lässt sich hervorragend arbeiten!
Aufrufe mit Passwort genannte sind mit Vorsicht zu behandeln, dann das Passwort ist zum Beispiel in der History zu finden, wenn es in einer Shell aufgerufen wird.
Sicherer ist es, entweder einen Passwortprompt mit -p - anzufordern:
rdesktop -f -k de -u Windows-User -p - Rechnername_oder_IP
oder das Passwort in einer Datei im Homeverzeichnis abzulegen (z. B. in einer dazu erstellten Datei ~/.rdesktoppw , die man mit chmod 600 ~/.rdesktoppw nur für sich selbst lesbar macht) und dann den Aufruf so vorzunehmen:
cat ~/.rdesktoppw | rdesktop -f -k de -u Windows-User -p - Rechnername_oder_IP
Falls der Server Komprimierung der RDP-Verbindung unterstützt, kann man diese mit -z aktivieren.
Für schnelle Zugriffe können Links z.B. auf dem Desktop mit den kompletten Aufrufen abgelegt werden.
Wer die Anmeldung an einem grafischen Frontend vorzieht, kann Programme wie grdesktop und tsclient verwenden, welche auf rdesktop aufsetzen.
Zum Zugriff auf einen Terminal-Server im Application-Mode (nur dann können man sich mehr als ein bzw. zwei Benutzer gleichzeitig anmelden) braucht man eine sog. Client-Access-Licence (CAL). Durch die etwas seltsame Art, wie der Microsoft Lizenzserver solche Lizenzen verwaltet, ist eine Lizenz an den Rechnernamen des Clients gebunden und kann, wenn sie einmal vergeben ist, nicht mehr gelöscht werden, so dass nach einer Namensänderung die Lizenz unwiederbringlich verlorengeht. Da man bei rdesktop den Clientnamen beliebig wählen kann (mit -n Name ), kann man damit ziemlich schnell jede Menge dieser Lizenzen verbraten und damit bares Geld verlieren!
Tipps & Tricks
Fernbedienung mit ssh, dyndns und Terminalserver
Situation: angenommen man hat einen Windows-Terminalserver namens win2kserv, der unter diesem Namen auch von einem Rechner mit dem externen Namen gateway.dyndns.org erreichbar ist (gleiches LAN) und will diesen von einem entfernten Linux-Rechner fernbedienen.
Man schaltet dann zuerst einen Tunnel zu dem Terminalserver-Port durch, -C sorgt für zusätzliche Kompression:
ssh -C -L 3389:win2kserv:3389 user@gateway.dyndns.org`
Die offene ssh-Sitzung lässt man dann einfach so stehen.
In einem anderen Terminalfenster startet man dann den rdesktop-Client und verbindet sich auf das lokale Ende des Tunnels, 800x600 Bildauflösung:
rdesktop -u Administrator -g 800x600 localhost
Man sollte nun den Administrator-Login-Dialog des Terminalservers in einem Fenster unter Linux sehen.
Performance: Bei einer 128kBit schnellen Verbindung (DSL-Upstream z.B.) kann man mit Office-Anwendungen arbeiten wie auf einem nicht mehr ganz aktuellen Rechner - also gemächlich, aber durchaus gut erträglich.
Mit Windows 2000 Server tut es nur mit 256 Farben, mehr geht nicht.
Windows XP und Windows Server 2003 unterstützen auch 16Bit Farbtiefe, ebenso wie rdesktop (8, 15, 16 or 24), siehe Parameter -a.
Drucker
Mit dem Parameter -r printer lässt sich der lokale Drucker einstellen. Er wird auf dem remote desktop für diese Sitzung dann zum Standdrucker.
Wer beispielsweise auf seinem Linux-Client einen lokalen (oder Netzwerk-)Drucker "Ricoh Aficio MP 2020D" als Druckerwarteschlange "ricoh" (hierfür sinnvollerweise ein einziges und nicht zu langes Wort wählen!) installiert hat, der kann nach diesem Aufruf darauf drucken:
rdesktop [...] -r printer:ricoh="Ricoh Aficio MP 2000 PS" [...]
Dabei ist wichtig, dass als Windows-Treiber zwischen den Anführungszeichen nicht einfach die Druckerbezeichnung verwendet wird, sondern diejenige Bezeichnung, die der Windows-Treiber nach der Installation des Druckers an einem Windows-PC ausgibt. Wenn nur ein Zeichen falsch ist, dann erscheint der Drucker in Windows einfach nicht, und es gibt keine Fehlermeldung. Am sichersten funktioniert es, wenn man zuvor - die Möglichkeit vorausgesetzt - den Drucker temporär am Terminalserver installiert und sich den so entstandenen angeblichen Druckernamen zur Verwendung merkt. Sollte man den richtigen Treiber nicht finden können, dann lohnt es sich (getestet mit Windows Server 2008), es mit der Angabe "MS Publisher Imagesetter" zu versuchen, wobei man dann allerdings zum Drucken nicht alle Optionen zur Verfügung hat (z.B. fehlt beidseitiger Druck).
Gibt man mit -r printer:spool1="..." -r printer:spool2="..." ... mehrere Drucker an, dann wird der zuerst angegebene auf dem Terminal zum Standarddrucker.
was kompliziertes
Nicht, dass noch jemand meint, man könne rdesktop nicht für wirklich abstruse Sachen missbrauchen:
Wir haben in der Firma ein Windows basiertes VPN, welches nur die Benutzung des Terminal-Server Protokolls ermoeglicht und alles andere sperrt. Zu Hause habe ich aber nur Linux und einen in einer VMware laufenden W2k-Server. Nun war ich zu faul, unter Linux die entsprechende VPN Software zu installieren und zu konfigurieren und probierte deshalb (erfolgreich) folgendes aus:
- Verbindung mit rdesktop auf den lokalen Terminal-Server in der VMware.
- Von dort aus VPN aufbauen mit dem Firmennetz.
- Dann einen Remote-Desktop-Client starten und auf einen Terminal-Server in der Firma connecten.
- Nun ist mein Desktop-Rechner dort ein W2kpro und kein Terminal-Server, außerdem laufen dort unter VMWare zwei Windows- und eine Linux Maschine. Was liegt also näher als mittels VNC vom Terminal-Server auf meinen Desktop zu connecten?
- Nicht zu vergessen, dass ich von dort dann ab und an mittels Telnet unseren Linux-Server warte?
Idee hierzu: Wenn Du auf dem Windows VM:Rechner der das VPN zu Deiner Firma aufbaust einen SSH_Server laufen lässt, kannst DU den Port für den Rdesktop (in der Firma) auf Deine Linuxmaschine tunneln, dann sparst Du Dir ein Terminal, das sollte dann noch flüssiger gehen.
Interessanterweise ist die Performance ueber DSL ganz ertraeglich. Wahrscheinlich wuerde sogar ISDN reichen.
Mini-Howto
Fragen
- Frage: Gibt es im Netz eine gute Resource, die die Windows-Seite von W32-Terminal-Servern erklärt?