Friday, March 4, 2011

Tastatur und Maus auf mehreren Rechnern gemeinsam nutzen

Problem: Auf Arbeit sitze ich vor einer Windows Kiste mit Tastaur und Maus. Daneben steht mein GNU/Linux-Netbook. Nun moechte ich gelegentlich auf das Netbook zugreifen, ohne ueber meine "Haupttastatur" greifen zu muessen oder das recht kleine Touchpad zu befingern.


Ansatz: Eine geschickte Kombination von Synergy, OpenSSH (OpenSSH fuer Windows) und ein kleines bisschen Windows Scripting machen es moeglich jeden Morgen aufs Neue eine verschluesselte Verbindung zwischen beiden Rechnern mit geringem Aufwand vom Netbook zu initiieren.


Loesung:


Im ersten Schritt wird auf beiden Rechnern Synergy installiert und auf dem Server (die Kiste mit Tastatur und Maus - also die Windows-Box) konfiguriert. Die Konfiguration habe ich im Synergy-Installationsverzeichnis gespeichrt (C:/Programme/Synergy/synergys.sgc). Um den Synergy-Server synergys.exe ohne das laestige Konsolenfenster und ohne GUI (qsynergy.exe) starten zu koennen, wird ebenfalls im Installationsverzeichnis folgendes JScript abgelegt.

C:/Programme/Synergy/synergys.js

var sh = new ActiveXObject("WScript.Shell");
var bin = "c:/programme/synergy/synergys.exe";
var args = "-c c:/programme/synergy/synergys.sgc";
sh.Run(bin + " " + args, 0, false);


Nun geht es daran OpenSSH fuer Windows einzurichten. Wenn bereits eine Cygwin-Umgebung eingerichtet ist, ist dieser Schritt wahrscheinlich ueberfluessig. Ansonsten einfach setupssh[...].zip von SourceForge laden, installieren und c:/programme/openssh/sbin/sshd.exe ohne weitere Konfiguration starten (am besten gleich eine Verknuepfung im Autostart-Ordner im Start-Menue anlegen).


Wenn alles funktioniert hat, koennen die Eingabegeraete nach dem folgenden Aufruf von der Linux-Kiste gemeinsam genutzt werden (dabei muessen natuerlich winuser und winhost durch die tatsaechlichen werte ersetzt werden).

ssh -f -L localhost:24800:localhost:24800 winuser@winhost 'c:/windows/system32/wscript.exe c:/programme/synergy/synergys.js' && synergyc localhost


Das kann jetzt noch in ein Shell-Script oder einen Alias verpackt werden.