Подключение по rdp с использованием ssh туннелей через промежуточный сервер

Использование ssh туннеля для подключения к удаленному рабочему столу windows, в случае если ssh сервер находится в одной сети с компьютером, к рабочему столу которого нужно подключиться, достаточно тривиально.
Более сложный случай - подключение к рабочему столу windows через сервер ssh когда все три устройства находятся в разных сетях. Например, это можно использовать для подключения к рабочему столу компьютера А, находящегося за файрволлом, с другого компьютера B, который, в свою очередь, расположен за файрволлом но в другой сети. Единственное условие - с обоих компьютеров должен быть доступен по ssh сервер C, на котором у пользователей компьютеров A и B есть учетные записи, настроенные соответствующим образом.
Принцип работы для такого примера:
1. На ssh сервере С создаем учетные записи для пользователей user1 (под этим пользователем будем создавать туннель к ssh серверу с компьютера А) и user2 (под этим пользователем будем создавать туннель к ssh серверу с компьютера В) с командной оболочкой /usr/sbin/nologin и домашним каталогом /var/empty. В sshd_config для пользователей добавляем строки вида:

Match User user1
 PermitOpen 127.0.0.1:20000
 ForceCommand /usr/sbin/sbin/nologin
Match User user2
 PermitOpen 127.0.0.1:20000
 ForceCommand /usr/sbin/sbin/nologin

Таким образом обеспечиваем невозможность открыть терминальную сессию и разрешаем только форвардинг через 127.0.0.1:20000. Для дополнительной безопасности настраиваем авторизацию по ключу для этих пользователей.
2. На компьютере В поднимаем ssh туннель с помощью plink.exe (консольная версия putty)

PLINK.EXE -ssh -N -L 127.0.0.1:5000:127.0.0.1:20000 -l user2 my.ssh.server.com

здесь
127.0.0.1:5000 - вход в тоннель со стороны компьютера В, 127.0.0.1:20000 - выход из тоннеля со стороны ssh сервера
-N - не запускать на сервере shell ( не выполнять команды )
3. На компьютере А поднимаем ssh туннель аналогично

PLINK.EXE -ssh -N -R 127.0.0.1:20000:127.0.0.1:8889 -l user1 my.ssh.server.com

здесь 127.0.0.1:20000 - вход в тоннель со стороны ssh сервера, 127.0.0.1:8889 - выход тоннеля на стороне компьютера А
-N - не запускать на сервере shell ( не выполнять команды )
Замечу, что в данном примере порт RDP на компьютере А был изменен со стандартного 3389 на 8889 через ключ реестра
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber] - ОС WinXP
Теперь для подключения к рабочему столу компьютера А с компьютера В, запускаем на компьютере В mstsc ( Подключение к удаленному рабочему столу) и подключаемся к 127.0.0.1:5000
Еще одно важное замечание, касающееся работы этой схемы. Для подключения по rdp по такому тоннелю должны выполняться два условия:
1. Должен быть поднят туннель с двух сторон.
2. На компьютере А пользователь , под учетной записью которого будет производиться вход с компьютера В, не должен быть залогинен в системе на компьютере А.
Т.о., для работы такой схемы нужно чтобы либо тоннель со стороны компьютера А поднимался автоматически при старте системы, либо он должен быть поднят под учетной записью другого пользователя.