Zeroconf(Bonjour/Avahi)を使いsshでIntel EdisonやRaspberryPiに楽につなぐ
Intel EdisonやRaspberryPiを使う場合、ssh経由で接続することが多い。EdisonやRaspberryPiを無線LANで接続し、DHCPでIPアドレスを取得している場合、立ち上げのタイミングによってIPアドレスが変化してしまうため、まずはIPアドレスを調べなければならなくなってしまう。
そこでIPアドレスではなくホストネームでこれらのデバイスに接続するために、ホストネームの自動登録・解決のためにZeroconfを用いる。
ZeroconfをAppleが独自に実装・拡張したのが「Bonjour」であり、Linuxなどには「Avahi」という実装が存在している。
【デバイス側の準備】
Intel Edison
EdisonでYocto Linuxを使っている場合は標準でmDNSサービスが動いているようなので、ホストネームの登録がきちんとできていれば問題ない。
一般的なセットアップを行っていれば、configure_edison --setupの際に、mDNSとSSIDに利用する名前として入力を求められているはず。
すでに設定してあるホストネームの確認は、cat /etc/hostnameなどで行えばいい。
RaspberryPi
Raspbianで動かしている場合、追加でAvahiのパッケージをインストールして用いることとする。
sudo apt-get update
sudo apt-get install avahi-daemon
これでAvahiのdaemonが動き出すので、利用できるようになるはず。
ホスト名は/etc/hostnameに設定するのだが、標準でraspberrypiが設定されているので、それで良ければそのままでいい。
【接続する端末側の準備】
Mac
最近のOS Xでは標準でBonjourが動いているので特に設定することはない。
Windows
AppleからBonjour for Windowsが公開されているのでそれを利用する。iTunesをインストールしていればインストールされているはずだし、もしもiTunesをインストールしていない/したくない場合は以下のプリントサービスをインストールすることでBonjourもインストールされる。
Bonjour Print Services for Windows
【Zeroconfでssh接続する】
接続情報として、ホストネーム.localを用いればいい。
例えばRaspberryPiの場合、Raspbian標準環境ならssh pi@raspberrypi.localなどとすれば接続できる。
基本的に同一LAN内でのみ有効で、sshのみならずブラウザからのアクセス、例えばhttp://edison.localなども有効。
この設定とつなぎ方で、これらのデバイスでの開発が少しだけ楽になるかも。