Припустимо, у нас є віддалена локальна мережа. Локальна мережа складається з комп'ютерів з Windows XP або будь-якого іншого сорту Windows. На цих комп'ютерах дозволено віддалене управління робочим столом.
Всі комп'ютери локальної мережі виходять в інтернет через шлюз на Linux. На ньому працює ssh-сервер, через який ми успішно адмін власне сам шлюз, а заодно і інші лінуксові сервера, якщо вони є. Єдиний відкритий порт - номер 22 (SSH).
Як в таких умовах підключитися до віддаленого робочого столу довільного віндового клієнта цієї мережі?
А можна використовувати засоби самого ssh.
Підключення до одного комп'ютера
Робимо в консолі:
ssh user @ $ EXT_IP -L 3389: $ LAN_IP: 3389
Приклад для закріплення
ssh [email protected] -L 1234: 192.168.1.111: 3389
Одночасно з кількома віддалених комп'ютерів
Іноді буває необхідно тримати одночасно кілька віддалених підключень.
Варіант 1. Різні локальні порти
У першій локальної консолі:
ssh user @ $ EXT_IP -L 1 234: $ LAN_IP1: 3389
У другій локальної консолі:
ssh user @ $ EXT_IP -L 5432: $ LAN_IP2: 3389
Тепер при підключенні до localhost: одна тисячу двісті тридцять чотири ми потрапимо на перший комп'ютер, до localhost: 5432 - на другий.
Граючись із портами треба бути гранично уважним: якщо у нас стоїть PostgreSQL. то в останньому прикладі він відвалиться, тому що сидить якраз на 5432 порту. Запити до нього будуть довбати в RDP $ LAN_IP2.
Варіант 2. Різні локальні інтерфейси
Повна запис параметрів ключа -L така:
Піднімаємо віртуальний мережевий інтерфейс і робимо ssh-канал через нього:
ifconfig eth0: 0 $ ANY_IP up
ssh user @ $ EXT_IP -L $ ANY_IP: 3389: $ LAN_IP2: 3389
Можна використовувати віртуальний інтерфейс eth0: 0 з IP-Аресом $ ANY_IP для всіх віддалених підключень, розділяючи їх номерами портів.
Зрозуміло, що варіюючи цільової порт можна підключатися не тільки до робочого столу, але і до інших віддалених службам. RDP був узятий просто як найбільш зрозумілий приклад.
P.S. Величезна подяка Євгену Короткову за стусани в правильному напрямку.