- irdkwmnsb / howto.md
- Setting up X11 forwarding over SSH on Windows 10 Subsystem for Linux?
- 3 Answers 3
- Raspberry Pi (Host) Configuration
- Windows (Client) Setup
- Note on XDMCP, FreeNX
- Use Linux Graphical Softwares on Windows via X11 Forwarding
- Pre-Requisites:
- Installing X11 Server on Windows:
- InstallingPuTTY:
- PuTTY is a SSH client for Windows. PuTTY can also be used for X11 forwarding over SSH.
- Using PuTTY for X11 Forwarding Linux GUI Apps:
irdkwmnsb / howto.md
Как подготовить свою шинду к плюсам
Если ты собираешься устанавливать VCXsrv (а скорее всего это так), то поставь его скачиваться сейчас. (общажным лучше качать по зеркало 2 — точно работает)
[тык] [зеркало 1 (моё)] [зеркало 2 (тоже моё)]
WSL1 (Windows subsystem for Linux (как то неправильно имхо они её назвали, по идее должно быть наоборот)) — прослойка между ядром линукса и виндой чтобы можно было запускать linux-овские программы.
WSL2 — то же самое, только теперь линукс работает полностью виртуально. (см. виртуальные машины)
- Поставить качать это
- Проверить что ваш компьютер совместим. А совместим он если
- У вас установлена windows версии 2004 (проверить можно в окне «Система»). (А лучше просто обновить винду, если вы давно этого не делали. Возможно микромягкие запатчили какой нить зиродей, но об этом не сказали.)
- Компьютер поддерживает Hyper-V (виртуализация какой её видит microsoft). Проверить это можно в диспетчере задач ( Производительность -> ЦП -> Снизу справа строка «Виртуализация») См Заметка о Hyper-V
- Включаем WSL — прописать в PowerShell (просто найти в поиске винды) с правами администратора следующее:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Не закрывайте консоль — она вам ещё понадобится. - Туда-же пишем
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart - Теперь пишем
shutdown /r /f /t 0 - Доброе утро.
Помнишь ту штуку из 0 шага? Запускай её. - Пишем wsl —set-default-version 2 в PowerShell от имени администратора
- тык
Регаемся в microsoft store или вводим учётку — ждём пока установится - Открываем и ждём. WSL распаковывается и устанавливается, так будет только один раз. Дальше она будет запускаться моментально.
- Linux спросит нас — как назвать пользователя. Можно писать что угодно. Например, можно использовать никнейм с гитхаба.
Дальше нужно придумать пароль. Это важный шаг, потому что то что вы сейчас придумаете, останется с вами на долгое время, поэтому лучше позаботиться о том чтобы ваш пароль был хорошим и запоминаемым.
Если вы не уверены в вашем текущем пароле (например используете его в больше чем 5 местах или не считаете его достаточно важным), то лучше сгенерить новый.
Я рекомендую вот этот генератор, его можно настроить под свой вкус. (по мотивам одного комикса)
Когда вы будете вводить пароль линукс не покажет то что вы печатаете — это нормально. Это делается, чтобы пароль не светился на экране. - Если всё прошло хорошо, то вас поприветствует следующая строка (или что-то похожее на это)
(для любознательных) Давайте разберёмся в том что мы видем.
Всё кроме последней строки называется MOTD (Message of the day) и так он выглядит на дистрибутивах ubuntu.
Последняя строка состоит из нескольких вещей
irdkwmnsb — имя текущего пользователя linux.
У всего что запускается в линуксе есть пользователь который это запустил. Есть один специальный пользователь которому дозволено делать всё что угодно — root . У него UID (user id) = 0. Чтобы выполнять команды от имени рута, нужно использовать утилиту sudo (если коротко, то эта штука позволяет некоторым пользователям запускать некоторые программы под некоторыми другими пользователями. Настройки у неё в /etc/sudoers (я не буду сейчас углубляться про то как работают пользователи, но отмечу что помимо пользователей есть группы, это немного другое, и если очень интересно почитать про это, то гугл — твой друг)).
Существует так же другя утилита которая называется su. Она позволяет логиниться под другим пользователем (логиниться — открывать shell (оболчку команд для компьютера)). Если запускать su без аргументов, то она откроет оболочку для » владельца» этого процесса.
Соответствено сочитание sudo su говорит ОС — пожалуйста, запусти su как будто это делает root . Что происходит? su даёт нам оболочку под пользователем root . Попробуйте написать sudo su в консоль и убедиться что имя пользователя действительно сменится на root . Так же, пока мы тут, обратите внимание, что $ сменился # . Об этом позже.
@ — знак разделения между именем пользователя и именем хоста.
irdkwmnsb-laptop — имя хоста текущего компьютера (так же известный как hostname)
: — знак разделения между именем хоста и текущем путём
/mnt/c/Users/me — путь до текущей папки.
Если путь начинается с / , то это абсолютный путь.
В линуксе все файлы имеют абсолютный путь. Попробуйте сделать ls / (list (перечислить) / (root directory (корневая директория))).
Если вдруг внезапно напало желание преисполниться в сознании, то можно гуглить ‘What does
Рано или поздно вы наткнётесь на директорию /proc и вам скажут что это особая директория, файлы которой не находятся на диске. На самом деле, эти файлы «виртуальные». Их действительно нет на диске — операционная система делает их на лету. Всё потому что в линуксе — всё это файл. Про это тоже можно погуглить.
Если путь начинается с . , то это относительный путь
В любой директории вам гарантируется две директории — . и .. , что соответствует текущей директории и директории родителя. Значит cd .. (change directory (поменять директорию)) поменяет текущую директорию на директорию родителя. Можно попробовать это сделать и увидеть, что теперь мы оказались в родительской директории.
Если путь начинается с
, то это тоже относительный путь, но относительно домашней папки текущего пользователя.
У каждого пользователя есть домашняя папка. Это всё что можно знать. Несколько моментов:
В отличие от винды в линуксе директории разделяются слешем, а не бэкслешем, но это не так важно. Если файл начинается с точки, то он считается скрытым. Именно поэтому когда мы делаем ls мы не видим директории . и .. . Чтобы ls писал все файлы нужно добавить параметр -a ( ls -a )
Некоторые программы могут сохранять настройки в своей домашней директории, поэтому если вы внезапно увидите файлы или директории которые начинаются с точки в вашей домашней директории, не удивляйтесь если что то сломается когда вы их удалите (не удаляйте их).
И последняя часть — $ — так называемый prompt — компьютер сообщает нам, что можно вводить команду. Если вместо $ стоит # , то команда будет выполнена от имени суперпользователя (root-а)
- Пишем sudo su , чтобы войти в суперпользователя (нужно будет ввести пароль).
- Пишем
можно я сейчас не буду объяснять что это делает бажожда
но если коротко, то мы просим менеджер пакетов сначала обновиться, а затем установить X11 utils. Это нужно чтобы проверить работоспособность X сервера
- Запускаем то что мы скачивали в самом начале. Прожимаем Далее (не установит яндекс браузер, не бойтесь.)
- Проверяем что оно работает двумя командами
- В меню пуск ищем «выполнить» и запускаем от имени администратора. Пишем
«C:\Program Files\VcXsrv\vcxsrv.exe» :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto Файервол попросит разрешение. Даём. - Пишем в терминал WSL DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk ‘
‘):0 xmessage -center «almost there»
Если всё установилось окэй, то мы должны увидеть окошко с сообщением «almost there»
- В меню пуск ищем «выполнить» и запускаем от имени администратора. Пишем
Делаем так чтобы это работало всегда
- Нажимаем Windows + R (выполнить) и пишем shell:startup
Создаём ярлык на «C:\Program Files\VcXsrv\vcxsrv.exe» :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto - В WSl пишем
echo «export DISPLAY=\$(cat /etc/resolv.conf | grep nameserver | awk ‘‘):0″ | sudo tee /etc/profile.d/xsetup.sh - Проверим.
Закрываем консоль ubuntu и снова открываем.
Пишем xmessage -center «stil works» .
Если открылось окошко, то всё всё ещё работает и скорее всего будет работать.
Поздравляю! Вы восхитительны
Можно перезапустить компьютер ещё раз и ещё раз всё проверить.
Устанавливаем Windows Terminal
С этим терминалом вы получите наилучший опыт использования WSL и Windows Powershell. Он очень гибко настраивается и вообще крутой парень.
Да собственно всё. Просто установите и пользуйтесь. Работает из коробки очень хорошо.
Чтобы открыть Ubuntu, нажмите на стрелочку вниз которая находится наверху. Там будет Ubuntu 20.04
Можно закрепить его в панели быстрого доступа, чтобы каждый раз не искать его.
Дальше по инструкции от преподавателей
Заметка об Hyper-V
Современные игры очень хотят чтобы в них небыло читеров. Поэтому многие из них помимо самой игры устанавливают античиты, которые въедаются в систему достаточно глубоко. Поэтому, иногда античиты просят выключить Hyper-V (точно знаю, что так делает Face it, а ещё вроде античит от valorant-а), и если вы это сделали, то вот как сохранить возможность гамать и решать домашки.
- Качаем EasyBCD (ссылка на моё зеркало)
Setting up X11 forwarding over SSH on Windows 10 Subsystem for Linux?
I have a Raspberry Pi 3 Model B+ connected to my local network and I can SSH into it with no problems. This does cause some problems though as everything is done on the command line.
What I would really like to do is use X11 forwarding by using the SSH client that comes with Windows Subsystem for Linux. I am running Windows 10 Pro with the 1803 update installed.
I’m just curious about how I might go about using this feature? If it won’t work in Windows 10 natively then I can always run a Linux virtual machine to connect to the Raspberry Pi.
3 Answers 3
This is definitely possible given your current setup. Note that you also have the option of using Putty but either way, you’ll need to have an X server running on the client machine, your Windows Subsystem for Linux — WSL. The client-server model of the X window system is partially what makes X forwarding so easy to pull off. All you need is an X server running on host and client.
Raspberry Pi (Host) Configuration
First, you’ll want to make a minor config adjustment to your SSH server on the host machine (your Raspberry Pi). First, find your sshd_config file within the etc directory. You can run these commands by ssh-ing into the Raspberry Pi (with a sudo-capable account), or accessing the Pi directly and then opening a terminal.
Once you’re in, run the command:
Make a backup of your sshd config file:
Now open the original file in a text editor with:
You can choose any text editor you’re comfortable with (see here for the nano text editor shortcuts). This is the main config file for the ssh server. Find and uncomment the following lines:
Save and exit. Now you’ll need to restart your Pi’s SSH server with:
Windows (Client) Setup
You’re done with your host. Now all you need to do is install an X server for Windows. There are a few options to choose from but I would go with Cygwin X which you can download here. Install it and once you run it, it should spawn a little window on your client which will be used to display the X program. You can now test that X forwarding is happening by returning to your WSL shell and running the simple command:
A simple clock should appear in the window spawned by Cygwin. You can terminate the clock by returning to your WSL shell and hitting Ctrl+C. If this command isn’t recognized, you may first need to install x11-graphics applications on the host machine with:
X forwarding should now be enabled for you and you can now run most if not all of your Raspberry Pi’s applications from Windows.
Note on XDMCP, FreeNX
You may wish to take things a step further and set things up to run an entire desktop environment from your Pi rather than just app-by-app which is what X forwarding allows. Here are a couple common options available to you:
- XDMCP: This is the easiest to set up but is notoriously insecure and most authorities only recommend you ever run it on a trusted, wired LAN (like your home network). This may be more trouble than it’s worth but if you’re curious to look into it, see this Rasp Pi thread for the initial setup.
- FreeNX: More secure than XDMCP and probably worth the time to set up if you’ll want to do this regularly and possibly from another network entirely. You’ll need to install a FreeNX server on the host, then use another piece of software — NoMachine — on your Windows client. See here for a very detailed guide.
Use Linux Graphical Softwares on Windows via X11 Forwarding
Pre-Requisites:
In order to use Linux graphical softwares on Windows using X11 forwarding, the remote Linux machine you’re connecting to must have SSH server software installed and X11 Forwarding enabled.
I have written an article to show you how to configure X11 forwarding on Linux. If you’re having trouble, be sure to check the article Configure SSH X11 Forwarding on Debian 10 on LinuxHint.
Installing X11 Server on Windows:
In this article, I am going to use VcXsrv on Windows to set up a X11 display server on Windows. VcXsrv is completely free. You can download it from SourceForge and install it on Windows very easily.
First, visit the official sourceforge page of VcXsrv. When the page loads, click on Download as marked in the screenshot below.
VcXsrv is being downloaded.
Once the download is complete, run the VcXsrv installer.
Click on More info.
Then, click on Run anyway.
Now, click on Yes.
Make sure Full is selected on the type of install and click on Next >.
Click on Install.
VcXsrv is being installed.
Once the installation is finished, click on Close.
Once the installation is finished, run XLaunch from your Desktop or Start Menu.
Click on Next >.
Click on Next >.
Click on Next >.
Now, click on Finish.
Now, click on Allow access.
X11 server should be running as you can see on the bottom right corner of the screen.
InstallingPuTTY:
PuTTY is a SSH client for Windows. PuTTY can also be used for X11 forwarding over SSH.
To download PuTTY, go to the official website of PuTTY. Once the page loads, click on the marked link from the Download PuTTY section.
If you’re using a 32-bit version of the Windows operating system, click on the 32-bit download link.
If you’re using a 64-bit version of the Windows operating system, then click on the 64-bit download link.
PuTTY is being downloaded.
Once the download is complete, run the PuTTY installer.
Now, click on Next.
Click on Next.
Click on Install.
Now, click on Yes.
Uncheck the View README file checkbox (optional) and click on Finish.
Using PuTTY for X11 Forwarding Linux GUI Apps:
Once PuTTY is installed, start PuTTY from the Start Menu.
Now, type in the username and IP address of your remote Linux machine where SSH X11 forwarding is configured.
Use the following format username@IP_ADDR.
Now, click on Connection > SSH > X11 and check the Enable X11 forwarding checkbox. Once you’re done, click on Open.
If you’re connecting to the remote server for the first time, you will see the following window. Click on Yes.
Now, type in the password of the login user of the remote server and press .
You should be logged in.
Now, to start a graphical application, just run the command that is responsible for starting the application that you need.
Let’s try to run Gedit text editor.
As you can see, Gedit is running correctly. The actual software is running on the remote Linux machine. But, the display is just forwarded to Windows. It really feels like a native Windows application. I tried it for a while, it works perfectly.
I also tried to run GNOME disk. It also worked nicely.
I tried to run Wireshark Network Analyzer. It also worked perfectly.
As you can see, I can monitor the network adapter of the remote Linux machine from the X11 forwarded Wireshark.
So, that’s how you set up X11 display server on Windows and use Linux graphical softwares on Windows via SSH X11 forwarding. Thanks for reading this article.