【今日から始めるラズパイ その2】Raspberry Pi SSH接続設定


2020/10/14 追記

本記事では、『ルータのリースアドレスを固定させる』, 『ラズパイに静的アドレスを固定する』の両方を設定しています。
しかし、実際は以下のどちらかの設定がしてあれば問題ありません。

  • ルータ側でリースするアドレスを固定するのであれば、ラズパイ側は単なるDHCPクライアントとして設定する
  • ラズパイで静的にアドレスを設定するのであれば、ルータはリースアドレスの範囲から除外する

本記事のやり方は多少冗長な部分がありますが、どちらでも問題なくリモート接続ができます。

はじめに

今回は、ラズパイをリモート操作できるようにする方法 について書いていこうと思います。
(ラズパイの初期セットアップ方法についてはこちらで説明をしています。)
ラズパイに周辺機器を接続しなくても、別のPCから遠隔操作できたら便利ですよね。手間も省けるし、配線も減って机上がすっきりします。
ってか、第一机の上に置いておかなてもいい!

ということで、今回はラズパイに電源を繋いで部屋の隅に置いておくだけで利用することができるように設定していきます。

対象読者

  • ラズパイを初めて使用する人、またはセットアップする人 ✋

    設定上どうしてもCGI(コマンドライン)操作やネットワークの基礎知識が必要です。

    以下に必要最低限の内容を書いているので、順番に読んでみてください。
  • すでにIPアドレスの役割やリモート接続の仕組みを分かっている人 ✋

    以下で説明している "基礎" は読みとばして、環境の確認あたりから読んでみてください。

目次

  • 1. 基礎
    • リモート接続
    • ルータの機能
    • どうやってインターネットに繋がる?
      • IPアドレス
      • DHCP
    • LAN
      • プライベートIPアドレス
      • サブネットマスク
  • 2. 準備
    • 環境
  • 3. ラズパイの設定
    • IPアドレスの確認
    • IPアドレスの固定
  • 4. ルータの設定
    • DHCPの設定
  • 5. リモート接続
  • 最後に
    • 引用・参考

1. 基礎

リモート接続

リモート接続(アクセス)とは、離れた場所にあるデバイスから通信回線を通して(主に無線で)ネットワークやデバイスにアクセスすることを指す。
遠隔地にある機器をあたかも手元にあるかのように操作することができ、実機を取り出さなくてもネットワーク経由で操作やメンテナンスといった制御が可能になる。

ルータの機能

今回、リモート接続の設定をする上でルータは必要不可欠です。
おそらく多くの家にはインターネットに接続するためにルータ(Wi-Fi)を設置しているかと思います。
普段、家庭などに設置して利用しているルータは「ホームゲートウェイ」や「統合ホームルータ」などとも呼ばれ(人によってはL3 Switchと呼ぶ人もいるかもしれませんが)主に次のような機能を持ちます。
(今回はメインではないので、簡単な説明に留めます。雰囲気だけ理解してもらえれば。)

  • アクセスポイント(AP)機能:ネットワーク内に存在する機器間の通信をブリッジ(中継)する
    • 有線ネットワークや有線通信の機器へ接続するための装置を無線LAN AP(無線AP / Wi-Fi AP)と言います
    • 単にAPという場合はこれを指すことが多い
  • ルーティング:ホームネットワーク(LAN)と外部のインターネット(WAN)で通信を行う
  • スイッチング:ホームネットワーク内(LAN間)で通信を行う
  • ネットワークアドレス変換(NAT / NAPT)機能:グローバルIPアドレスとプライベートIPアドレスを変換する
    • グローバルIPアドレス:WANで使用するアドレス
    • プライベートIPアドレス:LANで使用するアドレス
  • DHCP:アドレスを端末に割り当てる ⬅︎ 今回はここを触ります
  • ファイアウォール機能:LANとWANの通信をフィルタリングして内部ネットワークを守る

どうやってインターネットに繋がる?

IP(Internet Protocol)アドレス

まず、ネットワーク通信の前提としてIPアドレスというものがあります。IPアドレスはよく住所などに例えられますが、ネットワークの世界ではこのIPアドレスを実世界の住所のように使用することでデータの送受信先を決定します。
我々が普段使用しているスマホやタブレット、PC等のデバイスはルータに接続することによって通信に必要なIPアドレスを受け取ります。

DHCP(Dynamic Host Configuration Protocol)

正確にはルータによって割り当てられるアドレスはDHCPという機能によって貸し出された(リースされた)ものです。アドレスが貸し出されている期間を『リース期間』と呼びます。
普段使用している端末は、気づかないうちに一定期間ごとにルータに対して再びアドレスを割り当ててもらえるようにリクエストをかけることでリース期間の延長を行っています。リース期間は一般に24時間 ~ 1週間以上とされています。
ルータはリクエストを受けると未使用のアドレスを割り当てます。このように一定期間ごとにアドレスを返却したり借用したりを繰り替えすことでネットワークへの接続を保っているわけです。
これによりDHCPクライアントはリースメカニズムによって「移動」「電源を切る」などの場合に不要になったアドレスを持たなくてよくなります。


従って、大抵の場合は同じアドレスを割り当て直してくれますが、常に同じIPアドレスが割り当てられることは保証されていません。

実際に、サーバやプリンタなどの固定リソースを設置する場合、IPアドレスを使用してリモート接続することが多いため、固定アドレスを設定しておくのが一般的です。
アドレスを固定することで割り当てられるアドレスは同じになるので、あたかもリース期間が無限であるかのように延長することができます。
      

LAN(Local Area Network)

プライベートIPアドレス

我々は普段、ホームルータに接続するときLAN環境に所属します。LAN内ではIPアドレスのうち、プライベートIPアドレスを使用します。
IPアドレス(今回はIPv4)はドット.で区切られた8ビット(0~255)の数値4つで表します。この時、それぞれの8ビットセグメントを『オクテット』と呼びます。プライベートIPアドレスは最初の2つの数値が192.168.x.xであるため、家庭内で使用できるアドレスは後半2つを変えたものです。
ルータの種類や設定によって変わってきますが、ドットで区切られた3つ目の数値が192.168.1.10192.168.10.10だったりします。
大抵の場合はIPアドレスの4つ目の数値を自動的に割り振ります。また、通常192.168.11.1といった先頭のアドレス、もしくは192.168.11.254などの末尾のアドレスはルータ自身のアドレス(デフォルトゲートウェイアドレス)として使用するため、我々が使用するデバイスには割り当てられません。また、192.168.11.0192.168.11.255などの先頭、末尾のアドレスは用途が決められているためデバイスに割り当てて使用することはできません。

サブネットマスク

アドレスとセットで出てくるのがサブネットマスクです。主に255.255.255.0255.255.0.0などと表されます。
これらは同じ__ネットワーク(LAN)に存在するかどうかを判別するために利用されます。__
例えば、上の画像のように4つ目の数字のみが変化するネットワークの場合、255.255.255.0または/24のように表記します。もし、3つ目も変化する場合は、255.255.0.0または/16と表記します。
これは、

1つのオクテットは8ビットなので、8×24=24, 8×2=16 といったような計算になります。これらは255の部分がネットワークの特定に利用され、0の部分がホストの特定に利用されます。

今回は単純なものを扱っていますが、近年はクラスレスアドレス(CIDR)を利用することが一般的なので、255だけでなく、254252, 248なども存在します。

255.255.255.0同士であれば同一ネットワーク、それ以外であれば別のネットワークといった具合にネットワークの範囲を切り分けるために使用されます。
正確にはネットワークアドレスとのAND演算によって範囲を決定したり、デバイスの数は2のn乗で計算したりします。
サブネットの範囲の決定やVLANによるサブネット化に関しては今後詳しく説明できる記事を書きたいと思います。

2. 準備

本題に戻ります。今回はラズパイにリモート接続するということでしたが、この場合も同様でIPアドレスを使用します。
しかし、ここで__アドレスがその都度変わっていては、再びラズパイに周辺機器をつないでアドレスを確認する必要がでてくる__ため本末転倒です。
従って、いつも同じアドレスでアクセスできるようにIPアドレスの固定を行う必要があるわけです。
実際にやることは2つです。

  • ラズパイの設定
    • 常に同じアドレスを受け取るように設定する
  • ルータの設定
    • ラズパイに常に同じアドレスをリースできる(割り当てる)ように設定する

環境

  • 接続元PC:Mac
    • OS:macOS Catalina ver. 10.15.6
  • 接続先PC:Raspberry Pi 3 model B
    • OS:Raspbian GNU/Linux version: 8 jessie(Debian)
  • ルータ
    • 製品:BUFFALO WCR-1166DS Version 1.33
    • 設定:Air Station
  • 構成
    • 今回はLAN内でのリモート接続を想定して設定をするのでPC、ラズパイ共に同じルータに接続してください。

3. ラズパイの設定

IPアドレスの確認

ラズパイに接続したいPC(Mac)からTerminal.app(ターミナルの起動:「Launchpad → ターミナル」) を起動して以下のコマンドを実行し、現在割り当てられているIPアドレスを確認します。

  • $ ifconfig | grep inet (操作:Mac)



    ➡︎ 接続元PCには192.168.11.2が割り当てられています。

次に、まずは通常通り周辺機器を接続した状態でラズパイを起動します。
ラズパイのターミナルから以下のコマンドを実行し、同様に現在割り当てられているIPアドレスを確認します。

  • $ ifconfig | grep inet(操作:ラズパイ)



    ➡︎ ラズパイには192.168.11.4が割り当てられています。

これらはどちらもaddr 192.168.11.x mask 255.255.255.0というアドレスを持っているため、同一LANに存在することがわかります。

  • 注意:サブネットマスクは0xffffff00といった16進表記の場合があります。0xffffff00255.255.255.0は同じです。
  • 注意:割り当てられるアドレスは環境によって異なります!

IPアドレスの固定

IPアドレスの設定をconfigファイルと呼ばれる構成ファイルに書き込むことで、接続するIPアドレスを固定することができます。

① configファイルを/etc配下にdhcpcd.confという名前で作成します。(操作:ラズパイ)

  • $ sudo touch /etc/dhcpcd.conf(ファイル生成)

② 固定アドレスはラズパイに今割り当てられているアドレス192.168.11.4として、以下を書き込みます。

  • $ sudo nano /etc/dhcpcd.conf(ファイル編集)
dhcpcd.conf
#Wi-Fiインターフェースを指定
interface wlan0
#指定したい (固定したい) IPアドレスを指定
static ip_address=192.168.11.4/24
#ルータのIPアドレスを指定
static routers=192.168.11.1
#ルータのIPアドレスを指定
static domain_name_servers=192.168.11.1

→ [Ctrl] + [x]で編集を確認して、[shift] + [y]で保存します。

③ ラズパイを再起動します。

  • $ sudo reboot

④ 再びアドレスを確認します。

  • $ ip addr | grep 192

    おそらく次のように表示されるはずです。

    >> inet 192.168.11.4/24 brd 192.168.11.255 scope global wlan0

    これでラズパイ側の設定は完了になります。

4. ルータの設定

BUFFALO製のルータの場合、「Air Station」と呼ばれる管理画面にアクセスして設定を変えます。
Air StationはBUFFALA製のルータにあるGUI(視覚的に操作できる)管理画面ページです。

Air Stationのアクセスにはルータのアドレスが必要になります。
先ほど、接続元PCやラズパイが存在するLAN環境は192.168.11.0/24であることがわかっています。ルータは使用可能なアドレスの内、基本一番先頭のアドレスを使用するので今回であれば、192.168.11.1ということになります。
chromeやsafari等の検索エンジンを開き、URL入力欄に192.168.11.1と入力してください。
以下のような画面が現れます。

工場出荷時の状態では、ユーザ名「admin」、パスワード「password」で入れます。
注意:ルータ設定がアドレス入力によってWeb画面上できることを初めて知った人、パスワードがデフォルトのままの状態の人はこれを機に、ルータ本体のパスワードもセキュリティ上設定しておくことを強く薦めます。

Air Stationにログインすると、以下のような画面が表示されるので、『詳細画面』から設定を行っていきます。

詳細画面を開くと、以下のような画面になります。左側の『LAN』タブから『DHCPリース』を選択します。
すると、このルータに接続されている、またはしたことがある端末の情報と割り当てられたアドレスを見ることができます。

 赤色の欄を見ると、「手動設定」と「自動割当」となっているデバイスがあると思います。
(画像は伏せていますが、各端末は『MACアドレス』という端末固有の16進表記アドレスで識別されています。)
 次に、青色の欄を見ると、自動割当となっているデバイスにはリース期限があり、手動割当となっているデバイスはリース期限がありません。
今回は192.168.11.4のアドレスを固定していきます。(※ 画像ではすでに設定を終えた状態です。)

まず、『手動割当に変更』を押下して、MACアドレスは触らず、IPアドレスが192.168.11.4であることを確認したら『修正保存』を押下します。

これで192.168.11.4というアドレスはラズパイに固定され、「ラズパイ = 192.168.11.4」とバインドできました。
これにて、ルータ側の設定も完了です。

5. リモート接続

いよいよ本題であるリモートを接続します。通常リモート接続にはSSHというものを使用します。
(Telnetというものもありますが)

SSH とは

Secure Shell(セキュアシェル、SSH)は、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。

① 周辺機器を繋いだラズパイから以下のように接続の許可を行います。(操作:ラズパイ)

  • ラズパイのターミナルから以下のコマンドを実行してSSHディレクトリを作成します。
    • $ sudo mkdir ~/.ssh(フォルダは空で大丈夫です)
  • SSHを『有効』にします。
- パスワードを設定します。 デフォルトはユーザ「pi」、パスワード「raspberry」なのでパスワードだけ変更してみましょう。 ここまでこれば、後はラズパイの電源を落として周辺機器を外し、部屋の好きな場所に置くだけです。(電源コードを挿すだけ。)

② ラズパイがネットワークに接続されているかを確認します。(操作:Mac)

  • Macのターミナルを開いて以下のコマンドでラズパイが同一ネットワークにあることを確認します。
    • $ ping -c 5 192.168.11.4

      以下のように表示されれば、成功です。



      pingは指定したアドレスを持つデバイスと通信できるかを確認するために使用します。

      送信した5つのパケットはロス(パケ落ち)することなくすべて送信できています。

③ リモート接続します。(操作:Mac)
ラズパイが同一LANにいることが確認できたら、以下のコマンドを実行してください。

  • $ ssh [email protected] -p 22

    以下のような画面が接続元PC(自分のMac)に表示されたらリモート接続は成功です。


    これでラズパイをリモートから制御することができるようになりました。

最後に

今回は、それまで周辺機器がなければ使用できなかったラズパイをリモート接続によってコントロールできるように設定しました。実際にラズパイを使用する場合は、リモート接続によってコントロールすることが多いですし、そっちの方が圧倒的に効率的で便利です。
また、接続設定をするにあたりネットワークの基礎的な部分にも触れてみました。

  • ネットワークに接続するためにはIPアドレスが必要
  • ホームLANではIPアドレスは、設定されたルータから受け取る
  • 受け取っているアドレスはDHCPによって貸し出されたもの
  • アドレスが貸し出されている期間を『リース期間』と呼ぶ
  • リモート接続を使用する機器のアドレスは固定しておく

今後、今回設定したラズパイをリモートからでもGUI操作できる設定や、LAN外からのアクセス設定とそれに伴うセキュリティの設定などについても書いていきたいと思います。

それでは 💪

引用・参考


https://honto.jp/netstore/pd-book_28439979.html
https://www.netacad.com/