Exceed und Kerberos
Sicherheit

Exceed - Tools

Exceed mit anderen SSH-Clients


Exceed ist natürlich auch in der Lage, nebem dem Hummingbird-eigenen CSS auch mit anderen SSH-Clients zusammenzuarbeiten - vorasugesetzt, diese leisten X11-Forwarding. Problematisch ist dabei, dass Exceed und der SSH-Client getrennt voneinander, aber mit dem richtigen Timing gestartet werden müssen. Anstatt des gewohnten Xstarts müssen sämtliche Verbindungsparameter im Format des SSH-Clients angegeben werden.
Es empfiehlt sich, diese Aufgaben soweit als möglich mit kleinen Skripts zu erledigen. Im Folgenden soll dies am Beispiel des weit verbreiteten SSH-Clientprogramms PuTTY gezeigt werde.
Xstart mit PuTTY
Zum Einsatz kommt hier Xstart mit der Startmethode Local Application (siehe Abb. rechts).

Grundsätzlich geht PuTTY und davon aus, dass der lokale X-Server, mit dem der X11-Tunnel verbunden werden soll, mit der Display-Nr. 0 läuft. Problematisch wird die Sache, wenn Exceed eine abweichende Display-Nr. verwendet. Das ist der Fall, wenn mehrere Displays gleichzeitig verwendet werden sollen, insbesondere bei Betrieb von Exceed auf Windows Terminalserver.

Um sich das Leben einfacher zu machen, verwende man das Skript startputty.cmd, das unten gelistet ist und hier zum Download bereit steht. Die folgenden Beispiele gehen davon aus, dass startputty im Suchpfad (PATH) liegt. Im einfachsten Fall sieht der Aufruf aus wie in der Abbildung rechts: PuTTY wird ohne weitere Parameter gestartet mit der richtigen Display-Nr. (@# erstetzt Xstart durch die Display-Nr. der aktuellen Exceed-Instanz). ASKHOST veranlasst startputty.cmd, den Anwender nach dem UNIX-/Linux-Host zu fragen, mit dem verbunden werden soll. Alternativ kann dieser hier explizit angegeben werden, ebenso wie weitere Parameter für PuTTY. Das @! am Ende bewirkt, dass exceed.exe selbst bei Bedarf gestartet wird.
Auch das passende Beispiel-Profil putty.xs gibt es hier zum Download.

Hinweis: Da startputtx.cmd einige Befehlserweiterungen benutzt (eingeschaltet mit /E ON), ist mindestens Windows XP erforderlich.

Hier das Listing von startputty.cmd; evtl. ist der Pfad zu putty.exe sowie die Default-Startparameter anzupassen::
@echo off
:: --------------------------------------------------------------------------------------
:: Script to invoke PuTTY from Xstart
:: Version 2.0  May 2009
::
:: Usage:
:: startputty <displayno> [PuTTY command line parameters] [ASKHOST]
::
:: The first parameter is the number of the (local) X display to forward X11 to
:: Everything that follows the display number is redirected to the PuTTY command line
:: except ASKUSER makes the script ask the user for the host name
:: --------------------------------------------------------------------------------------

:: Path to PuTTY executable - please edit if need be
set PUPATH=%PROGRAMFILES%\PuTTY
:: pre-set PuTTY parameters for X11 forwarding and SSH2
set PUPARAM=-ssh -2 -X
:: default display with display number 0
set DISPLAY=127.0.0.1:0
:: make sure no host name is set
set SSHHOST=

:: first parameter is supposed to be the number of the local X display
if "%1" == "" goto PUTTY
set DISPLAY=127.0.0.1:%1

echo+
echo Use DISPLAY %DISPLAY%.
echo+

:: the following parameters are added to the PuTTY parameters
:ADDPARAM
shift
if "%1" == "" goto PUTTY
:: if one parameter is "ASKHOST" the user will be asked for the host name to connect to
if "%1" == "ASKHOST" (set /P SSHHOST="Remote Host:") else (set PUPARAM=%PUPARAM% %1)
goto ADDPARAM

:PUTTY
:: start PuTTY with all parameters
:: note: putty.exe will read the DISPLAY environment variable
:: ------------------------------------------------------------
start "PuTTY" "%PUPATH%\putty.exe" %PUPARAM% %SSHHOST%
:: ------------------------------------------------------------
exit

Xstart und PuTYDurch die Möglichkeit, weitere Parameter an PuTTY zu übergeben, lassen sich diese SSH-Verbindungen in Xtart beliebig vorkonfigurieren. Im nebenstehenden Beipiel wird Kompression eingeschaltet, Username und Passwort sowie der Zielhost angegegben.
Die Schwachpunkte dieser Lösung liegen auf der Hand: Login und Passwort sind  im Klartext hinterlegt. Zudem kommt nur der eingeweihte PuTTY-Kenner mit der Syntax zurecht.

Etwas besser wird die Situation mit der Verwendung von SSH-Userkeys (PuTTY-Parameter -i ...).  Hier eine Beispiel mit dem Batch-fähigen plink.exe aus der Standard PuTTY-Installation:

cmd /D /E:ON /C set DISPLAY=127.0.0.1:@# && start /MIN plink -batch -ssh -2 -X -C -l loginname -i %APPDATA%\PuTTY\mykey.ppk myhost xterm -ls @!
Immerhin wird Xstart mit dieser wenig übersichtlichen Befehlszeile ohne weitere User-Interaktion ein Xterm mit Login-Shell (Parameter -ls geht an xterm, nicht an plink !) über SSH starten und tunneln. Ein zusätzlicher kleiner Hacken ist hier das minimierte, leere cmd-Fenster, das der Anwender evtl. in seiner Windows-Taskleiste entdeckt und beendet. Damit beendet er aber auch die SSH-Verbindung und somit sämtliche darüber arbeitende X-Applikationen.

Fazit: Sicherheit und Bedienkomfort der nahtlos in Exceed bzw. Xstart integrierten Lösung mit der Connectivity Secure Shell vom Exceed-Hersteller sind mit PuTTY oder ähnlichen Dritthersteller-Produkten kaum zu erreichen.
Exceed und Kerberos
     ©2005 - 2009 Andreas Gottwald
Exceed - Tools