Raspberry Piでリモートデスクトップをつなぐまで

一昨年の夏頃にラズパイを買ったものの、最初に色々設定してネットに繋がったあたりで満足してしまい長らく放置していた。

要因としてはテレビに繋いでいたため、解像度が低くて色々めんどいというのが一番だったので、とりあえずWindowsからリモートデスクトップできるように設定してみた。
OSもWheezyだったのでJessieにアップグレードしようとこの辺を参考に色々やってみたが、結局最終的には詰んだので最初からインストールした。
Raspberry Piのアップデート(Wheezy → Jessie) | あっかぎのページ

気を取り直してインストー

  1. ラズパイのサイトでRaspbianのイメージをダウンロード
  2. SD書き込みソフトDD For Windowsをインストー
  3. 右クリック→管理者権限でDD For Windowsを実行し、ISOイメージを書き込む。ファイルを選ぶときは拡張子の種類をALLにする必要があるので注意。

Jessieは初期設定でもユーザ名「pi」で自動ログインされ、startx無しですぐにGUIが立ち上がった。設定も結構GUIでできてしまうので、ロケーションの設定などは左上のメニュー>設定>Raspberry Piの設定からやるとよい。

初期設定のパスワードは「raspberry」なので変えておく。

$ sudo passwd pi
新しいパスワードを聞かれるので2回入力(表示はされない)

同じくrootのパスワードも設定しておく。

$ sudo passwd root
新しいパスワードを聞かれるので2回入力(表示はされない)

無線設定

無線子機も特にドライバの指定などもなく認識し、ネットワークも右上のWi-FiのマークからSSIDを選んでパスワードを入力するとつながってしまう…のだが、ちょっとハマった。
SSIDを選択し、パスワードを入力してもNot Associatedと表示されてIPが振られていない状態になった。何か設定が足りてないのかと思って

$ sudo leafpad /etc/wpa_supplicant/wpa_supplicant.conf

        proto=WPA
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        priority=2

あたりを色々書き換えてみてもつながらない。結論から言うと無線親機を再起動したら直った。かなりの無駄骨…。


そして、GUIでパスワードを入力すると平文で保存されてしまうので、つながることを確認したあとは暗号化して保存しておく。

$ sudo wpa_passphrase {SSID} {PASSPHRASE}
network={
        ssid="SSID"
        #psk="PASSPHRASE"
        psk=38497220976092fc2707a838e4d4385019256149f99f935be22c90159d3b8373
}

この出力で /etc/wpa_supplicant/wpa_supplicant.conf の該当部分を上書きすれば良い。
コメントアウトされているもとのパスフレーズは消しておく。

日本語入力の設定

Google日本語入力オープンソース版のMozcをインストール。これだけGUIでやった。

  1. 左上のメニューからMenu>Preferences>Add / Remove Softwareを開く
  2. 検索窓で「fonts-takao」を検索して「Japanese TrueType font set, Takao Fonts」にチェックを入れてインストー
  3. ibus」で検索して以下をインストー
    1. Intelligent Input Bus – GTK+3 support
    2. Intelligent Input Bus- GTK+2 support
    3. Mozc engine for iBus – Client of the Mozc input method
    4. qt-immodule for ibus (QT4)(plugin)
    5. Intelligent Input Bus – core
    6. Input method configuration framework
  4. Menu>設定>iBusの設定からMozc以外を削除
  5. 再起動して完了

SSH接続の設定

ネットワークにつながれば、SSHの設定をすればTera Termを使ってCUIのリモートはできた。

$ sudo raspi-config

5.Interfacing Options > P2 SSHSSHをenableしてやればよい。


XRDPのインストー

参考リンク先からのコピペでxrdpをインストー

$ sudo apt-get update
$ sudo apt-get install xrdp 

続いてまたコピペで日本語入力環境の設定

$ cd /etc/xrdp/
$ sudo wget http://w.vmeta.jp/temp/km-0411.ini
$ sudo ln -s km-0411.ini km-e0010411.ini
$ sudo ln -s km-0411.ini km-e0200411.ini
$ sudo ln -s km-0411.ini km-e0210411.ini
$ sudo service xrdp restart


接続元のIPを指定。iptablesの設定はシェルスクリプトでやった。まず以下のようなファイルを適当に作る。名前は仮にset_ip.shとする。
ちなみに参考リンクではIPTABLESは大文字だったが、小文字にしないとエラーが出た。

#!/bin/sh

LOCALNET="192.168.0.0/24" ←例:適宜変更。変数を使わずIP直打ちでも良い。
iptables -A INPUT -p tcp -s $LOCALNET --dport 3389 -j ACCEPT
iptables -A OUTPUT -p tcp -d $LOCALNET --sport 3389 -j ACCEPT
iptables -A INPUT -p udp -s $LOCALNET --dport 3350 -j ACCEPT
iptables -A OUTPUT -p udp -d $LOCALNET --sport 3350 -j ACCEPT

実行可能にしておく

$ sudo chmod 775 set_ip.sh

root権限で実行

$ su - 
  rootのパスワード入力
$ sudo bash set_ip.sh

これでWindowsからIP指定でリモート接続できる…はずだったが、つながるもののパスワードを入れるとエラーでログインできない。
そこでいったんxrdpをアンインストールして、tightvncserverを入れてから再度インストールしたらできた。

$ sudo apt remove xrdp
$ sudo apt-get update
$ sudo apt-get install tightvncserver
$ sudo apt-get install xrdp

ログインすると無事リモート接続完了。

ちなみに

参考書籍はこういうのを買ってみた。まあ一応動かすことはできるかなくらい。
なんだかんだ手元にiPadとかがあるとネットで調べながらできるので調べ物自体は楽である。便利な世の中に鳴ったもんだ。