Wenn man einen SSH-Dienst auf einem Windows-Server
installiert hat und sich mit diesem verbindet, kann man einen Tunnel für
beliebige TCP-Ports aufmachen und so z. B. VNC oder Remote-Desktop-Verbindung
nutzen. Gerade die Kombination aus SSH-Dienst und Remote-Desktop-Verbindung
(mstsc)
nutze ich gerne für Fernwartungszwecke.
Aus Sicherheitsgründen wird der Remote-Desktop-Dienst
(TermService) inzwischen deaktiviert ausgeliefert. Was also tun, wenn man
ihn nur mittels der SSH-Konsole aktivieren möchte?
Erster Versuch: Dienst starten:
$ net start TermService
Remotedesktopdienste wird gestartet.
Remotedesktopdienste wurde erfolgreich gestartet.
Das müsste ja eigentlich reichen, aber
tut es leider doch nicht. Mit netstat kann man leicht nachprüfen, dass
kein Prozess am TCP-Port 3389 horcht:
$ netstat -an -p tcp
Aktive Verbindungen
Proto Lokale Adresse
Remoteadresse Status
{...}
TCP 0.0.0.0:1352
0.0.0.0:0
ABHÖREN
TCP 0.0.0.0:5001
0.0.0.0:0
ABHÖREN
{...}
Eine Recherche ergab, dass man in der
Windows Registry den Wert fDenyTSConnections
unter HKLM\SYSTEM\CurrentControlSet\Control\Terminal
Server von 1 auf 0 ändern muss.
Dafür kann man das reg-Kommando
nutzen.
Zuerst den aktuellen Wert ausgeben:
$ reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal
Server" /v fDenyTSConnections
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server
fDenyTSConnections REG_DWORD
0x1
Dann ändern in 0:
$ reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal
Server" /v fDenyTSConnections /t REG_DWORD /d 0x0
Der Wert fDenyTSConnections ist vorhanden. Überschreiben
(J/N)? j
Der Vorgang wurde erfolgreich beendet.
Und kontrollieren:
$ reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal
Server" /v fDenyTSConnections
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server
fDenyTSConnections REG_DWORD
0x0
Gut, jetzt also den TermService
wieder beenden:
$ sc stop TermService
[SC] ControlService FEHLER 1051:
Ein Stoppzeichen wurde an einen Dienst gesendet, von
dem andere Dienste abhängen.
Jetzt noch einmal mit net
stop:
$ net stop TermService
Die folgenden Dienste hängen vom Dienst Remotedesktopdienste
ab.
Das Beenden des Dienstes Remotedesktopdienste beendet
auch diese Dienste.
Anschlussumleitung für Remotedesktopdienst
im Benutzermodus
Möchten Sie diesen Vorgang fortsetzen? (J/N) [N]:
Es wurde keine gültige Antwort gegeben.
Leider überspringt er die Nachfrage
immer mit dem Vorgabewert N(ein). Welcher Dienst ist das denn genau?
$ sc query
{...}
SERVICE_NAME: UmRdpService
DISPLAY_NAME: Anschlussumleitung für Remotedesktopdienst
im Benutzermodus
TYPE
: 20 WIN32_SHARE_PROCESS
STATE
: 4 RUNNING
(STOPPABLE, NOT_PAUSABLE,
ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE
: 0 (0x0)
SERVICE_EXIT_CODE :
0 (0x0)
CHECKPOINT
: 0x0
WAIT_HINT
: 0x0
{...}
Gut, dann also Schluss mit UmRdpService:
$ sc stop UmRdpService
SERVICE_NAME: UmRdpService
TYPE
: 20 WIN32_SHARE_PROCESS
STATE
: 3 STOP_PENDING
(NOT_STOPPABLE,
NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE
: 0 (0x0)
SERVICE_EXIT_CODE :
0 (0x0)
CHECKPOINT
: 0x0
WAIT_HINT
: 0x0
Und endlich auch mit TermService:
$ sc stop TermService
SERVICE_NAME: termservice
TYPE
: 20 WIN32_SHARE_PROCESS
STATE
: 3 STOP_PENDING
(STOPPABLE, NOT_PAUSABLE,
ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE
: 0 (0x0)
SERVICE_EXIT_CODE :
0 (0x0)
CHECKPOINT
: 0x1
WAIT_HINT
: 0xea60
Jetzt noch einmal den Dienst starten:
$ net start termservice
Remotedesktopdienste wird gestartet.
Remotedesktopdienste wurde erfolgreich gestartet.
Und kontrollieren:
$ netstat -an -p tcp
Aktive Verbindungen
Proto Lokale Adresse
Remoteadresse Status
{...}
TCP 0.0.0.0:3389
0.0.0.0:0
ABHÖREN
{...}
Jetzt funktioniert die Remote-Desktop-Verbindung
endlich - und wenn ich nicht vergessen hätte, warum ich überhaupt auf den
Server wollte, könnte ich es sicherlich tun...
Quelle: "Remote Desktop
remote aktivieren", Siegfried Seifert, MCSEboard.de
http://www.serverhowto.de/Remote-Desktop-remote-aktivieren.227.0.html