IPアドレスがわからないラズパイにホスト名でSSH接続する簡単な方法(mDNS)

ラズベリーパイで作業する際にSSHを使って接続することがよくありますが、DHCPでIPアドレスが動的に割り当てられる環境で、IPアドレスがわからなくて接続できないことがあります。特にディスプレイが無い環境だと調べるのに一苦労です。

そんな時にmDNSという仕組みを使って、簡単にSSH接続する方法を紹介します。

想定する環境

  • 小規模な自宅ネットワーク(DNSサーバーを立てていない/設定していない)
  • ラズベリーパイのOS: Raspbian Jessie
  • 固定IP、動的IP(DHCP利用)どちらでも大丈夫。

接続方法

前準備

ラズベリーパイのホスト名を事前に確認しておく必要があります。デフォルトはraspberrypi ですが、raspi-configなどで変更している人は注意してください。

ターミナルを起動して現れるプロンプトを見るとわかります。

pi@raspberrypi:~ $

このように表示されていたら、@から後の「raspberrypi」がホスト名です。

また、プロンプトに表示されていない場合はhostnameコマンドで確認します。

pi@raspberrypi:~ $ hostname
raspberrypi

ホスト名で接続する

接続元となるPCからターミナルで以下のように入力します。

ssh pi@raspberrypi.local

ssh {ユーザー名}@{ホスト名}.local となっています。

これでパスワードを入力して無事に接続されたら完了です!簡単(^o^)

 

複数台のラズパイを同じネットワークに接続する場合は名前を変えましょう

識別できるように名前を変更してください(ex. raspi-1、raspi-2 など)。1つしか繋がっていない場合は特に変更する必要はありません。

ホスト名の変更は、raspi-configコマンドを使って行います。

sudo raspi-config

「2 Hostname」を選択

ASCII文字のa〜z、0〜9、-(ハイフン)だけしか使えませんので注意してください。

ホスト名を設定します。その後、了解を選択して再起動すれば完了です。

 

 

マルチキャストDNS (mDNS) について

mDNSは、multicast Domain Name System の略で、自宅ネットワークなどネームサーバーが無いローカルネットワーク内で、ホスト名をIPアドレスに変換する(名前解決する)仕組みです。ユニキャストDNSサーバーがあっても協調して動くそうです。

macで使われているBonjourです。ホスト名.local でアクセスするアレです。

ラズベリーパイ(Raspbian jessie)では最初から使えると思うのですが、もしうまくいかない場合は以下の方法で確認してみてください。

avahi-daemon の確認

ラズベリーパイにログインして、ターミナルから以下のコマンドを実行します。avahi-daemonがenabledになっていればOKです。

$ systemctl list-unit-files --type=service | grep avahi
avahi-daemon.service                   enabled 

もし、インストールされていなかったり、disableになっている場合には、次のコマンドでインストールしてenabledにしましょう。

sudo apt-get install avahi-daemon
sudo systemctl enable avahi-daemon
sudo systemctl start avahi-daemon
systemctl status avahi-daemon

まとめ

mDNSの仕組みを使って、ホスト名.local で簡単に接続できる方法を紹介しました。DHCPを動かしている自宅ネットワークなどで、ラズパイでわざわざ固定IPの設定をしなくて済むようになります^^

それではみなさん、素敵なラズパイライフを!