Windowsfx11 に xrdp で接続するには?
Windows なら、Windowfx11 にインストールされている AnyDesk ではなく RDP で接続でしたいと思うんです。
それで xRDP をインストールしてみましたが。。。
やはり Linux。一発ではキマリませんでした。
Windowsfx11 にリモートデスクトップ接続する手順を残しておこうと思います。
リモートデスクトップの速度は vnc 並に遅いです・・・。
(メモ)
Windowsfx11 のディスプレイマネージャーは SDDM です。
Windowsfx11 に xRDP をインストールする方法
- まずは、Windowsfx をパソコンにインストールしてログインしてください。
※インストール直後、設定ダイアログが表示されていますが、そこでテーマを選択するといきなり再起動がかかります。
- PowerSell を使って xrdp をインストールします。(windowsfx の場合インストール直後から ssh も使えます。)
sudo apt install -y xrdp
↑上のコマンドを実行すると、xrdp amd64 0.9.17-2ubuntu2 と xorgxrdp amd64 1:0.2.17-1build1 のパッケージがインストールされます。
通常ならこれだけでリモートデスクトップで接続できるようになりますが、接続してみると「Oh no! Something has gone wrong.A problem has occurred and the system can’t recover.Please log out and try again」の↓下のエラーになってしまいます。
- エラーの対応として、リモートデスクトップでログインするユーザーのホームに .xsessionファイル を用意します。(ポイントはここです。)
echo "startplasma-x11" > ~/.xsession
- ここで一旦、再起動します。
sudo shutdown -r now
- リモートデスクトップで接続します。
↑コンピューターに接続するコンピューターの IP を入力して「接続」ボタンを押します。↓の画面が表示されます。
ユーザー と パスワード を入力して「OK」ボタンを押します。
↑上の画面が表示されれば成功です。
以上
引き続き xrdp を使って VNC で接続する方法
VNC を使って接続する場合は、デスクトップにログインしていないと接続できません。
(『X11VNC はリモートコントロール用の追加のディスプレイを作成せず、既存の X11ディスプレイ を表示することができます。』←だからか)
ここからの操作は実機にログインして行った方が良いです。
- Discover から X11VNC Server をインストールします。
- スタートの「All apps >」から X11VNC Server を立ち上げます。
「Select x11vnc port」の画面では、そのまま「OK」ボタンを押します。
「Accept Connections」にチェックを入れて「OK」ボタンを押します。接続にパスワードが必要なら「Password」を入力します。
※因みに Discover から起動すると何故か↓下の画面が表示されませんでした。
これで VNCクライアント から接続できます。
- 次に、xrdp で「XVnc」を使って接続しょうとすると、うんともすんとも言わず、syslog に「[ERROR] xrdp_wm_log_msg: error loading libvnc.so specified in xrdp.ini, please add a valid entry like lib=libxrdp-vnc.so or similar [INFO ] error loading libvnc.so specified in xrdp.ini, please add a valid entry like lib=libxrdp-vnc.so or similar 」のエラーが出ました。その対策として xrdp を最新のものに更新します。
sudo su -
wget http://mirrors.kernel.org/ubuntu/pool/universe/x/xrdp/xrdp_0.9.19-1_amd64.deb
dpkg -i xrdp_0.9.19-1_amd64.deb
xorgxrdp は最新のものに更新しなくても VNC で接続することはできましたが、↓下のコマンドで xorgxrdp を最新のものに更新できます。
wget https://mirrors.edge.kernel.org/ubuntu/pool/universe/x/xorgxrdp/xorgxrdp_0.9.19-1_amd64.deb
dpkg -i xorgxrdp_0.9.19-1_amd64.deb
更新後、xrdp をリスタートします。
systemctl restart xrdp
- vi /etc/xrdp/xrdp.ini で [Xvnc] の所にある port=-1 を port=ask に変更します。
#port=-1
port=ask5900
ルートになっていましたので出ます。
exit
- これで VNC でアクセスすることができます。
XVnc での接続は、ログイン先の PC にログインしていてもリモートデスクトップで同じデスクトップにアクセスすることができます。
以上
ログイン画面で VNC を使うには?
ログインすると1回切断されますけど…。一応できました。
ログイン画面で VNC をする為に必要なパッケージをインストールします。
sudo su -
apt-get install -y xvfb
↑xvfb は GUI でなくても GUI のソフトウェアを使えるようにするものです。「You probably need to install a package that provides the “Xvfb” program.」のエラーの対応です。
X11VNC に接続するためのパスワードファイルを生成します。
x11vnc -storepasswd /etc/x11vnc.pass
# x11vnc -storepasswd /etc/x11vnc.pass
Enter VNC password:
Verify password:
Write password to /etc/x11vnc.pass? [y]/n
Password written to: /etc/x11vnc.pass
/etc/systemd/system/x11vnc.service ファイルを作成します。
[Unit]
Description=x11vnc
After=multi-user.target
[Service]
Type=simple
ExecStart=/bin/bash -c "sleep 10; /usr/bin/x11vnc -xkb -noxrecord -display :0 -auth /var/run/sddm/* -rfbauth /etc/x11vnc.pass -forever -loop -noxdamage -repeat -shared"
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
7行目の 「/bin/bash の実行」、「sleep 10秒待ち」とか本当に必要です。無いとサーバー起動時に X11VNC が起動しません!
コマンドラインで x11vnc を実行するなら↓下のスクリプトでもいけるんですけどね。ここは要調査です。
x11vnc -xkb -noxrecord -display :0 -auth /var/run/sddm/* -rfbauth /etc/x11vnc.pass -forever -loop -noxdamage -repeat -shared
・-xkb
クリップボードを共有するみたい。
・-noxrecord
・-display :0
起動中のXのディプレイ番号。
・-rfbport 5900(デフォルト 5900 なので、わざわざ書きません)
X11VNC のポート番号。
・-auth /var/run/sddm/*
認証方法。KDE(sddm)の場合は /var/run/sddm/* にします。sddm では -auth guess は機能しません。←ここ重要です。ハマりました。
・-rfbauth /etc/x11vnc.pass
パスワードファイルを使って認証します。
・-forever
最初に接続したユーザーが切断しても、X11VNC が終了しないようにします。
・-loop
X11VNC が終了しても再起動するようにします。
・repeat
キーの自動繰り返しをオンにします。
・-noxdamage
画面にあまり変化していないときの負荷を軽減します。
・-shared
複数のビューアが共有できるようになります。
・-create(このオプションは付けない)
-auth guess(間違い)にした場合、「Invalid MIT-MAGIC-COOKIE-1 key15/01/2023 14:48:58 XOpenDisplay(“:0”) failed.」のエラーが表示されたので、-create を付けたのですが、このオプションを付けたのが間違い。このオプションを付けると VNC でログインした後に、root でログインされていて XTERM が立ち上がっている画面になりました。
x11vnc を起動時に起動するように設定します。
systemctl daemon-reload; systemctl enable x11vnc
↓こちらは今回調査するために使ったコマンド。(メモ)
systemctl daemon-reload
systemctl enable x11vnc
systemctl start x11vnc
systemctl stop x11vnc
systemctl status x11vnc
systemctl list-dependencies
再起動してログイン画面にアクセスしてみましょう。
shutdown -r now
XVnc でアクセスすると、ログイン画面が表示されましたが、ログインするとリモートデスクトップが切断されてしまいます。再度 XVnc で接続するとログイン後のデスクトップに繋がります・・・。深すぎます・・・・。
以上