WSL2 REDHAT系LINUXでのRDP接続考察
2022/07/28
2022/08/14
WSL2 LinuxでRDP接続はUbuntuを使った場合の事例はネットでも検索すると多く、比較的設定もすんなり行きます。一方WSL2 REDHAT系LINUXでのRDP接続と言うと全く無きに等しく。あっても古い情報ばかりでうまく行かない。今回はこれを機に少し解決を調べてみた。
今回のターゲットOSはCentOS7.9
実際にはFedoraCoreやRockyLinux8.5でも検証したが同じ系統のディストリだけにほぼ同じでした。 RDPの接続にはxrdpのパッケージのインストールが不可欠だ。このインストールを行うと一緒に必要なソフトも一緒に導入してくれるのでパッケージの導入自体はそれほど大きな問題ではない。 このインストールでtigervncやxrdp-sesmanも一緒に導入してくれる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
wsl2のCentOSの導入は省略します。以前の記事で分かると思うので。 > sudo yum groupinstall Xfce > curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py >temp > sudo mv temp /usr/bin/systemctl > sudo chmod +x /usr/bin/systemctl > sudo systemctl enable graphical.target > sudo vi /usr/bin/systemctl <---- pythonのバージョンを確認するとpython2なのでREDHAT8系以上互換ではpython3にしておく。 CentSO7.9はそのままでOK wsl2ではsystemctlがそのままでは使えないため互換性のあるトリックで似たようなものに置き換えるのが以上の作業。 RedHat7系のディストリではpython2.7を使うのでこのままで良いがRedHat8系ではpython3を使うため置き換えた systemctlのスクリプトのバージョンをpython3に書き換える必要はある。 > sudo yum install -y xrdp > sudo vi /etc/xrdp/xrdp.ini <---port 3390に書き換え > sudo vi /usr/libexec/xrdp/startwm.sh 実はこの作業がみそ。最下行か2,3行手前のwm_startをコメントアウトする。追加でstartxfce4を挿入 #wm_start startxfce4 exit |
xrdpを起動する。
xrdp-sesmanが自動起動しないので手動で起動するか起動スクリプトを作成し対応。Ubuntuではxrdpを起動すると自動起動するのですがね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
> sudo systemctl start xrdp > sudo systemctl start xrdp > ps -e PID TTY TIME CMD 1 ? 00:00:00 init 7 ? 00:00:00 init 8 ? 00:00:00 init 9 pts/0 00:00:00 bash 38 ? 00:00:00 xrdp 39 pts/0 00:00:00 ps > あれxrdp-sesmanプロセスが起動していない。つまりセッションマネージャだ。 この現象はRED HAT系ディストリでは共通で発生した。 で対応策は直接以下のコマンドを投入。 > sudo systemctl start xrdp-sesman > ps -e PID TTY TIME CMD 1 ? 00:00:00 init 7 ? 00:00:00 init 8 ? 00:00:00 init 9 pts/0 00:00:00 bash 38 ? 00:00:00 xrdp 42 ? 00:00:00 xrdp-sesman 43 pts/0 00:00:00 ps > そうです。これを待ってました。これならRDP接続ができるはず。 面倒くさいので起動スクリプトを書く。 > vi start_rdp.sh #!/bin/bash sudo systemctl start xrdp XRDP=$! sudo systemctl start xrdp-sesman XRDP_SESMAN=$! wait $XRDP $XRDP_SESMAN > chmod +x start_rdp.sh > ./start_rdp.sh |
RDP接続の開始前に
最初に接続先の仮想OS側のCentOS7.9のIPアドレスを調べる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
> ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 62:59:8d:f6:15:ce brd ff:ff:ff:ff:ff:ff 3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 4e:48:d9:db:99:90 brd ff:ff:ff:ff:ff:ff 4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 link/ipip 0.0.0.0 brd 0.0.0.0 5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 link/sit 0.0.0.0 brd 0.0.0.0 6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:1c:cc:db brd ff:ff:ff:ff:ff:ff inet 172.28.236.66/20 brd 172.28.239.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::215:5dff:fe1c:ccdb/64 scope link valid_lft forever preferred_lft forever > これを見るとIPが172.28.236.66であることがわかった。ではこれに対してRDP接続を行えばよいですね。portは忘れず3390で! |
RDP接続の開始
先ほど調べたIPで接続をしてみます。 次に資格認証を効いてきます vncのログイン画面が出てきます。 無事にデスクトップ画面が表示されました。