粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

Ubuntu 18.04 リモートデスクトップ接続のための サーバー構築

筆者の使用環境

ubuntuへのリモートデスクトップ接続は毎回苦労した記憶がありますが肝心の設定はすぐに忘れてしまうのでここに記します。

現在は以下のような構成でWindows10からUbuntu18にリモートログイン作業をしています。

所要時間はストレートに行けば15分〜30分といったところでしょうか。

https://dl-web.dropbox.com/s/scv5mnny810l24p/0001_Login.png

環境比較と参考文献

以前jetsonでやっていたときなどは軽さを重視してxfce4を使っていましたがUIイマイチなので見た目を重視したUbuntu MATE(マテと読むそうです)を使います。

ossyaritoori.hatenablog.com

主に以下のサイトを参照しました。

Ubuntuの画面共有設定

本格的な設定の前の下準備です。なお,今後特に断りがないコードはbashのコマンドとします。

imamachi-n.hatenablog.com

画面共有の有効化

f:id:ossyaritoori:20200819013653p:plain

-「設定」→「共有」→「画面共有」から画面共有をアクティブにする。 - 「パスワードを要求する」にチェックを入れる。 - もし「共有」→「画面共有」の項目がない場合,sudo apt install vinoを実行して設定を開き直す。

参考:lowreal.net

一度ここで再起動をしたほうがいいです。

再起動後,リモートログインの項目が現れて「共有」がOFFになっているので改めてONにします。

f:id:ossyaritoori:20200819015722p:plain
再起動後の画面

暗号化処理をOFF,ファイヤウォールのポート開放

  • 通信の暗号化処理をOFFにします。
sudo gsettings set org.gnome.Vino require-encryption false
  • ファイヤウォールの状態を確認
sudo ufw status

これが非アクティブとでたら下を飛ばして次に進みます。

  • ファイヤウォールがアクティブのとき5900番ポートを開ける
sudo ufw allow 5900
sudo ufw reload
sudo ufw status

万が一,Windowsからの接続がうまく行かない場合,思い切ってufwをOFFにできます。

sudo ufw disable

もちろんsudo ufw enableでもとに戻すこともできます。

寄り道:SSHサーバーの設定

どうせSSHもたまに使うことになるので同時に入れておきます。

sudo apt-get install openssh-server

SSHのポートは22であることが通例なのでそちらも開けておきます。

sudo ufw allow 22
sudo ufw reload
sudo ufw status

SSHがつながればscpなどでファイルを送りつけたりいろいろ便利です。

XRDPまわりの設定

1. Ubuntu MATEのデスクトップ環境をインストール

自分が最初一番ハマったのはここでした。以下でいろいろ設定するのですが,肝心のMATEの環境がないのを忘れたまま実行した場合VNC errorといったErrorが出現し,それに延々悩まされていました。

実際には以下のコマンドを叩くだけです。

sudo apt install -y ubuntu-mate-desktop

途中で,

check for a default display manager.

  1. gdm3  2. lightdm

のような記述がでるかと思いますが,リモート用なので軽量のlgithdmを選択しました。

2. xrdp, Tiger VNCのインストールと設定

ここからは文献1の「えんでぃ」氏のコメント通りに進めます。 xrdpをインストールします。

sudo apt install -y xrdp
sudo sed -e 's/^new_cursors=true/new_cursors=false/g' \
           -i /etc/xrdp/xrdp.ini
sudo systemctl enable xrdp
sudo systemctl restart xrdp

TigerVNCをインストール

sudo apt install -y tigervnc-standalone-server

3. xrdpの初期設定をする。

XDG_DATA_DIRS=/usr/share/mate:/usr/share/mate:/usr/local/share
XDG_DATA_DIRS=${XDG_DATA_DIRS}:/usr/share:/var/lib/snapd/desktop
cat <<EOF > ~/.xsessionrc
export XDG_SESSION_DESKTOP=mate
export XDG_DATA_DIRS=${XDG_DATA_DIRS}
export XDG_CONFIG_DIRS=/etc/xdg/xdg-mate:/etc/xdg
EOF

4. ~/.xsessionの編集

~/.xsessionを編集して以下のようにします。root権限が必要です。

viが無難ですがgeditやcodeの方が初心者には使いやすい気もします。こわいお兄さんに言ったら怒られる可能性もありますが*1sudo gedit ~/.xsessionで良いでしょう。

  • ~/.xsessionの変更後
unset DBUS_SESSION_BUS_ADDRESS

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

exec mate-session

5. /etc/xrdp/startwm.shの編集

日本語化やバグ取りに必要だった手順です。

sudo gedit /etc/xrdp/startwm.shを実行し文末手前に以下の部分を追加。

# 以下追加分
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS="@im=ibus"
ibus-daemon -d
unset DBUS_SESSION_BUS_ADDRESS
exec mate-session
# ↑コピーここまで

# 以下元からある部分
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession

6. /etc/xrdp/xrdp.iniの設定

sudo gedit /etc/xrdp/xrdp.iniを実行後開いたファイルに対して以下の文を[Xorg]の行の前に挿入します。 自分の場合目安として156行目に入れました。

[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
#xserverbpp=24
#delay_ms=2000

7. bashrcの変更

fcitx > /dev/null 2>&1

再起動

sudo service xrdp restart

補足

繋がらないときのTips

エラーの原因は結構しょうもないことの方が多かったりします。

  • pingはお互いつながるか?
  • 実行し忘れた項目がないか?
  • apt update & apt upgradeやrebootで治ったりもする
  • とりあえずsudo service xrdp restartしてみる

など。


*1. sudo権限で編集,作成したファイルはroot権限のないエディタなどから編集できなくなるから(rootがあれば権限はまたいじれる)。ですよね?