RDP

2021年3月17日 (水)

WSL2でRDPサーバーを動かす

2021/3/22
・日本語変換のインストール方法について追加した。

2021/3/21+
・「「localhost:3390」で接続する際、接続できないことがある。」問題があり、
それは、localhostの実IPへの変換が安定していないせいだったが、
.wslconfig設定を追加することで修正した。

2021/3/18++
・SSH環境を修正したので、RDPログイン環境下でも、PowerShell.exeが動作するようになった。
参照:WSL2でSSHサーバーを動かす
 
2021/3/17
初版

WSL2 RDP server

WSL2 RDP server

概要

WSL2でRDPサーバーを動かす。
以下での環境整備が完了している前提でのRDPサーバーのインストール方法について述べる。
WSL2でSSHサーバーを動かす

.wslconfig設定(2021/3/21追加)

localhostの実IPへの変換を正常にさせるために以下を設定する。

windows側のc:\Users\<ユーザ名>\.wslconfigを作成して
以下の内容を設定する:

.wslconfig

localhostForwarding=True

以上を設定した後、以下を実行する:

PowerShell

wsl --shutdown

以上の実行でwslをシャットダウン(その後自動で起動される)。
これは、windows10のPCを起動するたびに実行する必要があるので
SSHサーバーで自動実行のbatに登録すると便利になる。

setup-ubuntu-ssh.bat

wsl --shutdown for /F %%i in ('wsl -d Ubuntu-20.04 exec hostname -I') do set ip=%%i netsh interface portproxy delete v4tov4 listenport=22 netsh interface portproxy add v4tov4 listenport=22 connectaddress=%ip% wsl -d Ubuntu-20.04 -u root bash /opt/service_start.sh

RDPサーバーのインストール

以下の手順でインストールする:
ubuntu20.04/WSL2

sudo apt update && sudo apt -y upgrade sudo apt -y install xfce4 sudo apt install xfce4 xfce4-goodies sudo apt install xrdp sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini echo xfce4-session > ~/.xsession #startwm.shを編集する sudo nano /etc/xrdp/startwm.sh #最後の2行をコメントアウトする。 #そして、末尾に #startxfce4 #を追加する。

編集後のstartwm.sh

/etc/xrdp/startwm.sh
(修正部分のみ)

<省略> ##test -x /etc/X11/Xsession && exec /etc/X11/Xsession ##exec /bin/sh /etc/X11/Xsession # xfce startxfce4

RDPサーバーの起動

sshでWSL2-ubuntuにログインして 以下を実行する:

sudo service xrdp start #出力 * Starting Remote Desktop Protocol server

RDPサーバーの起動状況を確認したい場合、
以下のコマンドを実行する:

service xrdp status #出力 * xrdp-sesman is running * xrdp is running

ある程度、自動的にxrdpサーバーを起動する場合は
以下を~/.profileの末尾に追加する:
.profile

<省略> # xrdp retval=$(service xrdp status >/dev/null 2>&1; echo $?) if [ ! $retval == "0" ]; then echo xrdp server start... sudo service xrdp start fi # dbus retval=$(service dbus status >/dev/null 2>&1; echo $?) if [ ! $retval == "0" ]; then echo dbug start... sudo service dbus start fi

このスクリプトでログイン時に
serviceの状態をチェックしているので、
xrdp serverが停止している場合、
「xrdp server start...」が表示されるので、
パスワードを入力する。

RDPで接続する

windows10の「リモートデスクトップ接続」で
localhost:3390 に接続する。
この後、プロンプトが表示されるので、
セッションをxorgのままにして、
WSL2のユーザー名とパスワードを入力する。
ここで、xfce4のディスクトップ画面が表示される。

現在、以下のような制限があるようだ:
(1)PATHが変更になっているのか、PowerShell.exeが動かない。
2021/3/18: SSH環境の改善で動作するようになった。
参照:WSL2でSSHサーバーを動かす
(2)コマンドラインからGUIアプリを起動した場合は、(Xserverが起動している場合)Xserverによる表示になる。
以下の場合はRDPによる表示になる:
・ファイラーでファイルを指定してアプリを選択してクリックするとGUIアプリを起動する。また、アプリ・アイコンをクリックしての起動やアプリケーション・メニューからの起動などができる。
(3)外部からのアクセスでもRDP接続できるようだが、画面が黒いままで使用不可である。
  
/********** 以下の解決済み(2021/3/21) **********
トラブルシュート:
「localhost:3390」で接続する際、接続できないことがある。
原因不明だが、windows10のPCのIPアドレスがDHCPで払い出されて、
実質的にIPアドレスが変わったときに接続できない状況になっている印象がある。
確定的な解決方法は今のところないが、何度も再起動からトライしていると接続できるようだ。
************************************************/

日本語変換のインストール(2021/3/22)

RDPディスクトップのターミナルで以下を実行する:

# 日本語化 sudo apt -y install language-pack-ja sudo update-locale LANG=ja_JP.UTF8 # fcitx-mozc(日本語入力)のインストール sudo apt install -y fcitx-mozc dbus-x11 sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id" # fcitx設定 # profileの編集 sudo nano /etc/profile #以下を末尾に追加する: #fcitx export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx export DefaultIMModule=fcitx fcitx-autostart > /dev/null 2>&1 xset -r 49 > /dev/null 2>&1 ##

以上のインストールが終了したら、WSL2を再起動する。 再度、RDPログインすれば、日本語変換が使用可能になる。

おまけ(chromeのインストール)

以下の手順でchromeをインストールできる:

sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo apt update sudo apt install google-chrome-stable

デスクトップのプリケーション・メニューから起動できる。

参考情報

localhost関連:
WSL2の2つの設定ファイル「.wslconfig」と「wsl.conf」
「WSL 2」最大の課題であった“localhost”問題が解決 ~「Windows 10」Build 18945 すべてのWSLディストロに共通のグローバル設定、カスタムLinuxカーネルの利用にも対応
WSL2: UbuntuでLocalhostを表示させる方法

RDP関連:
Linux on Windows: WSL with Desktop Environment via RDP
WSL2+ubuntu20.04: GUI化して使う方法

SSH関連:
WSL2のUbuntuにsshできるようにする
Windows10で特定のポートを開放する
WSL2 に外部からアクセスする
MobaXterm - Enhanced terminal for Windows with X11 server, tabbed SSH client, network tools and much more

日本語変換関連:
WSL2+Ubuntu 20.04LTSでデスクトップ(xfce4)を表示する。
Windows10 の WSL(Windows Subsystem for Linux) の Ubuntu18.04 で日本語入力する設定

その他:(未確認)
WSL2+Ubuntu 20.04環境から音声を出力する

以上

続きを読む "WSL2でRDPサーバーを動かす"

| | コメント (0)