Windows 10: Подключение графического режима к WSL

В прошлый раз я настраивал на Windows 10 что-то вроде облегчённой версии виртуальной машины Linux — WSL. Это несомненно удобнее, чем полноценная виртуальная машина на VirtualBox или VMWare. Но в том случае у нас был доступ лишь к консоли, а работать с рабочим столом мы не могли, что вносило некоторые ограничения. В принципе можно было запустить gedit из терминала, но хотелось большего. В этот раз постараемся решить эту проблему через RDP — Remote Desktop Protocol.
У меня видеокарта GeForce, поэтому в консоли Ubuntu проверю, установились ли для неё драйверы:

Ubuntu 22.04.2 LTS
nvidia-smi
Mon May 29 10:59:54 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.65.01    Driver Version: 516.94       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0  On |                  N/A |
| 36%   44C    P5    21W / 170W |    392MiB /  2048MiB |      1%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A        23      G   /Xwayland                       N/A      |
+-----------------------------------------------------------------------------+

Мы можем запустить какое-нибудь графическое приложение (если оно установлено), например gedit:

Ubuntu 22.04.2 LTS
gedit
На компе должна быть установлена Windows 11 или Windows 10 Build 19041+.

 

Приложение откроется в отдельном окне окне Windows и на панели задач у него будет значок с пингвином.
Если вы установили это приложение, то ссылка на него появится и в меню Пуск в разделе Ubuntu 22.04.2 LTS:
GEdit link in Start menu

Установка среды рабочего стола xfce4

1. Установим xfce4 и дополнения к нему:

Ubuntu 22.04.2 LTS
sudo apt install -y xfce4
sudo apt install -y xfce4-goodies

2. Устанавливаем сервер удалённого рабочего стола:

Ubuntu 22.04.2 LTS
sudo apt install -y xrdp

3. Делаем резервную копию файла настроек:

Ubuntu 22.04.2 LTS
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak

4. Чтобы не было конфликтов, изменим номер порта (с 3389 на 3390):

/etc/xrdp/xrdp.ini
port=3390

4. Создадим файл .xsession:

Ubuntu 22.04.2 LTS
echo xfce4-session > ~/.xsession

5. Внесём правки в файл startwm.sh (закомментируем последние две строчки и добавим новую)

/etc/xrdp/startwm.sh
# test -x /etc/X11/Xsession && exec /etc/X11/Xsession
# exec /bin/sh /etc/X11/Xsession
startxfce4

6. Запустим сервер удалённого рабочего стола:

Ubuntu 22.04.2 LTS
sudo /etc/init.d/xrdp start

Подключаемся с помощью Remote Desktop Connection

localhost:3390
На этом настройки закончились и по идее всё должно работать. Но лично у меня при заполнении окна логина на удалённом рабочем столе он так и остаётся пустым и дальше уже ничего не грузится. Если вдруг потом найду решение, отпишусь. Комментарии с решеним приветствуются!

 

Настройка для Kali Linux

Тут все работает практически без особого шаманства.
neofetch
Устанавливаем Win-KeX:

kali-linux
sudo apt update
sudo apt install -y kali-win-kex

Запускаем рабочий стол:

kali-linux
kex --win -s

Launch Kali desktop
По кнопке F8 доступно расширенное меню TigerVNC, где можно, например выйти из полного экрана или наоборот в него переключиться.

Если не будет работать инет, то всё же придётся подправить конфиг:

sudo vi /etc/resolv.conf
/etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
#generateResolvConf = false
nameserver 192.168.1.254
#nameserver 172.28.80.1

И, как сказано в комментарии к этому файлу, вносим изменения в файл /etc/wsl.conf в текущей консоли Линукс:

/etc/wsl.conf
 [network]
generateResolvConf = false

Работа с клиентом SSH

Пытаюсь соединиться с роутером по SSH, но там нет публичных ключей и т.п.:

kali-linux
ssh -v -o "PubkeyAuthentication=no" -o "PreferredAuthentications=password" mgts@192.168.1.254

Получаю ошибку:

Unable to negotiate with 192.168.1.254 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

В этот раз помогло такое сочетание ключей:

kali-linux
ssh -oHostKeyAlgorithms=+ssh-dss mgts@192.168.1.254

Иногда может возникнуть такая ситуация:

kali-linux
ssh superadmin@192.168.0.1
Unable to negotiate with 192.168.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1

Хорошо, укажем тип шифрования вручную:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 superadmin@192.168.0.1

Но в этом случае мы можем получить такой ответ:

Unable to negotiate with 192.168.0.1 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

Тогда укажем оба варианта:

ssh -c aes256-cbc -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss superadmin@192.168.0.1
The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
DSA key fingerprint is SHA256:xpc13p0S8atU6scRLXAa7fhcmYkBQAp2p0SUnSR3kVA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.1' (DSA) to the list of known hosts.
superadmin@192.168.0.1's password:

Не запускается рабочий стол Kali Linux

При попытке запустить рабочий стол, в терминал выводится ошибка:

Failed to connect to «127.0.0.1:1»: unable to connect to socket: No connection could be made because the target machine actively refuses it.

 

При этом файрвол ничего не блокирует.
Оказалось, что нужно не просто перезагружать Linux, а перезагрузить WSL:

Windows PowerShell
wsl.exe --shutdown
Если это не поможет, то перед этой командой выполнить в терминале Линукс такую команду:

sudo systemctl disable network-manager.service

Хотя у меня и без неё заработало.

 

В графическом режиме (в режиме рабочего стола) не переключается раскладка

Раскладка не переключается с помощью комбинации клавиш, а также через виджет раскладки.
Не знаю, как победить этот баг на уровне изменения настроек. Поэтому, если вам нужно переключить раскладку с русского на английский или наоборот, изменяете режим отображения рабочего стола с полноэкранного на оконный, после чего переключаете раскладку как у вас настроено в основной системе.



Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments