RDP via SSH - Alles muss über einen Port....

Posted on Tue 15 July 2008 in Linux • 1 min read

Wir haben eine soooo "tolle" Firewall auf Arbeit und der Cisco VPN Concentrator ist auch nicht gerade das gelbe vom Ei. Also einen Rechner fertig gemacht, der genau einen Port offen hat - den SSHd.

[caption id="attachment_65" align="aligncenter" width="300" caption="SSH Tunnel"][/caption]

Damit man sich das mal vorstellen kann ( Router, Switche usw fehlen).

Auf unsere paar Windows Server kommen wir via RDP auf. Damit ich nicht immer alles per Hand tippen muss, bzw in der history gucken, wie der Befehl gleich war, hier ein faule-Leute-Script ;)

#!/bin/bash
#
#

SSH_OPTIONS="" # additional options for ssh command
RDP_PORT="3389"
RDP_OPTIONS="-z -g 1024x768 -a 16 -k de"
LOCAL_IP="127.0.0.2"

# Usage info
if [ "$1" = "" ] ; then
        echo "Usage: $0 rdp-target ssh-target [ssh-port]"
        exit
fi

if [ "$2" = "" ] ; then
        echo "Usage: $0 rdp-target ssh-target [ssh-port]"
        exit
fi

if [ "$3" != "" ] ; then
        SSH_OPTIONS="$SSH_OPTIONS -p $3"
fi

# Set target host and SSH target
TARGET_HOST="$1"
SSH_TARGET="$2"

#
TMP=`echo $TARGET_HOST | cut -d'.' -f 4`
if [ $TMP -gt 100 ] ; then
    LOCAL_PORT="26$TMP"
else
    LOCAL_PORT="260$TMP"
fi

ssh $SSH_OPTIONS -f -L $LOCAL_IP:$LOCAL_PORT:$TARGET_HOST:$RDP_PORT $SSH_TARGET sleep 10

rdesktop $RDP_OPTIONS $LOCAL_IP:$LOCAL_PORT &

Es baut die SSH Verbindung auf, zusammen mit dem Befehl sleep 10, damit die Verbindung automatisch schließt wenn rdesktop beendet wird. Desweiteren nimmt es von der IP, die letzten 8 Bit und bildet fast dynamisch den lokalen Port. Der Rest sollte selbst erklärend sein.

Der Aufruf für das Netzwerk oben wäre dann: `sshrdp 192.168.26.20 root@192.168.26.254 !

Hier das Script zum runterladen: sshrdp