りなっくすとらずぱい!

Raspberry Pi初心者に向けた各コマンドの説明、プログラムの作り方について紹介しています!

Raspberry Piを買ってまずやること (2 - 別のPCから接続できるようにする)

こんにちは、たねやつです。

前回までの部分でOSをSDカードにインストールしてRaspberry Piを起動させるところまで完了しました。

現状はRaspberry Pi自体はインターネットには繋がっていない状態で、キーボードも直接接続しているためめちゃくちゃ不便ですよね😣

今回はいつも使っているWindowsやMacのPCからRasbperry Piを遠隔操作できるように設定します。今回の設定を終えるとHDMIケーブルもキーボードもRaspberry Pi本体に直接接続する必要がなくなります!

また、今回からバリバリLinuxコマンドを使用しながら設定ファイルの編集などを行っていきます。できるだけ丁寧な解説を心がけていきますが、もし不明な点やうまくいかないところがありましたら遠慮なくコメントなどに残していってください!

前の記事

無線LANルーター本体のIPアドレス、SSIDを特定する

前準備として無線LANルーターのIPアドレスを特定しておく必要が あります。

各社によって異なりますが、以下のページに各社ごとのIPアドレスの一覧が乗っているのでそれを参考にしてみてください。

特定できたらPCのブラウザのURLにhttp://[特定したIPアドレス]を入力すると設定画面が表示されるはずです。例えばBuffaloのルーターを使用している場合にはhttp://192.168.11.1へアクセスするとOKです。

特定したIPはどこかにメモしておいてください。後々使用します。

Raspberry Piにログインする

前回起動が成功したままだと以下のような感じの画面が表示されているはずです。

Raspbian GNU/Linux 9 raspberrypi tty1

raspberrypi login:

このままだとWindowsを立ち上げただけのような状態なのでユーザー名を指定してログインしていきます。しかし、まだユーザーなんかを登録してはいないので最初から用意されているデフォルトのユーザーでログインします。

ユーザー名は"pi" パスワードは"raspberry"

まずはpiと打ち込んでみます。画面上にpiと表示されていればOKです。その状態からエンターキーを押すと以下のような感じの文字列が表示されます。

raspberry pi login: pi
Password: 

この状態はパスワード入力待ちの状態です。試しにraspberryと入力してみてください。入力しても画面上には何も表示されません。

Linuxではパスワード関係の入力時には、入力した文字列も・・・も表示されません。エンターキーを押して初めて何が入力されているかわかります。

タイプミスなく入力されていればズラズラっと何か表示された後にこんな感じに表示されます。

pi@raspberrypi ~ $

これでpiというユーザーでログイン完了です。とりあえずの設定はこのユーザーで進めていきます!

IPアドレスの固定

まずはこのRaspberry Piに割り当てられるIPアドレスを固定するための設定を行います。IPアドレスとは、インターネットに接続している機械1台1台に設定されている、住所のようなものです。もちろん今使用しているスマホやパソコンにも設定されています。

特に設定しないままだと、無線LANルーターが勝手にいい感じに使われていないIPアドレスを割り振ってくれますが、サーバーとして使用する機械のIPアドレスがころころ変わってしまうとかなり面倒です。感覚としては毎日通っている学校や会社の場所が変わってしまうぐらいの感じでしょう(笑)

Raspberry Piを外部から操作するうえでも、IPアドレスが毎回異なっていると、毎回調べなければならないので、固定します。

dhcpcd.confを編集する

いきなり何のことだ!という感じかもしれませんが、このファイルを編集することでIPアドレスを固定できます。まずはこのファイルがある場所まで移動していきます。

Windowsなんかとは違ってエクスプローラーでフォルダをクリックして…という感じでファイルを探すことはCUI上ではできません。ですので現在いる場所からdhcpcd.confが存在しているところまで移動していく必要があります。

現在いるディレクトリから移動するにはcdというコマンドを使用します。Change Directoryの頭文字と覚えるとすんなり覚えられます!

Linuxでは「フォルダ」のことを「ディレクトリ」と呼びます。フォルダと同じように捉えてOKです!

それではコマンドを実行してみます!ファイルが存在しているディレクトリは/etcというディレクトリにあります。(ちょっと間違った説明ですがここではとりあえずこのまま行きます。)

cd /etcと打ち込んでエンターを押すとディレクトリを移動することができます。するとこんな感じで表示されます。

pi@raspberry ~ $ cd /etc
pi@raspberry /etc $

~だった部分が/etcに変わりました!この青い文字は、現在いるディレクトリを表しています。~はログインしているユーザーのホームディレクトリを表しています。WindowsではC:\Users\piのような感じで用意されている個人用のフォルダです。

移動ができたのでdhcpcd.confを編集します。ファイルの内容をテキスト形式で編集するためのコマンドはいろいろありますが、ここではnanoを使用します。おそらくCUI上で使用できる一番簡単なエディタだと思います😎

またdhcpcd.confの編集には管理者権限が必要となります。Windowsでも何かソフトをインストールするときに「このアプリがPCに変更を加えることを許可しますか?(はい/いいえ)」みたいなポップアップが表示されることがありますよね?この時にも管理者権限で実行するというようなことが行われています。

現在のpiユーザーではコマンドの先頭にsudoとつけることで管理者権限で実行することができます。ですので以下のような感じでコマンドを実行します。

pi@raspberry /etc $ sudo nano dhcpcd.conf

成功するとファイルの編集画面に遷移します。いろいろ表示されているかと思いますがとりあえず矢印キーの下を押し続けてファイルの末尾まで移動します。末尾の内容はこんな感じになっています。

…
# It is possible to fall back to a static IP if DHCP fails:
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

移動できたら設定を追加していきます。末尾から1行分の空行をあけてこんな感じで書いてください。現状コピペできないのがつらいですが。。。😣

interface wlan0
static ip_address=192.168.11.50/24
static routers=192.168.11.1
static domain_name_servers=8.8.8.8
項目 説明
interface wlan0(無線の場合) 有線の場合はeth0を設定
ip_address [固定したいIPアドレス]/24 他の機器のIPアドレスとかぶらないように...
routers [無線LANルータのIPアドレス]
domain_name_servers 8.8.8.8 DNSの設定。特にこだわりがなければroutersに設定した値と同じでもOK

ip_address=の後の値はRaspberry Piに指定したいIPアドレスを記述します。末尾の/24はとりあえず書いておいてください。

無線LANルーターが自動でほかの機器に割り当てたIPアドレスと衝突しないように50番台や100番台のアドレスを指定することをお勧めします。

routers=の後の値は各家庭によって(無線LANルーターの種類によって)変わります。先ほどメモした値をここで指定してください。

domain_name_servers=の後ろの値はインターネットにアクセスする際の名前解決という作業をだれにやってもらうかを指定します。ここでは8.8.8.8というGoogleが提供している名前解決用のサーバーを使用します。

DNSや名前解決について興味のある方は以下のリンク先などご参照ください。




値の設定が完了したら、もう一度入力した文字が間違っていないかなどを確認してからCtrl + Oを押します。するとnanoの画面の下のほうがこんな感じに変わりますのでエンターキーをそのまま押します。(上書き保存)

File Name to Write: /etc/dhcpcd.conf

保存が完了したらnanoを終了します。終了させるためにはCtrl + Xを押します。

しっかりと保存できているかを確認したい場合にはlessというコマンドを使用します。このコマンドでファイルの中の見ることができます。(編集はできません!)読み取るだけなら管理者権限は必要ないのでsudoは必要ないです。(つけても問題ないです。)

pi@raspberry /etc $ less dhcpcd.conf

lessの画面に遷移したら矢印キーを押し続けて一番下まで移動します。Shift + Gを押すことでも最下部まで移動できます。

ちゃんと書き込んだ内容が表示されていればOKです!qキーを押すことでlessの画面から抜けることができます。qQuitのqですね😏 意外とプログラミングとかLinuxコマンドを覚えていくと英語の単語力がつくかもしれないです(笑)

無線LANルーターに接続する

これから行う作業はスマホなんかでWi-Fiに接続するときにSSIDを選択してパスワードを入力するという作業と全く同じとなります! 大きなの違いは、スマホはGUI、Rasbperry PiはCUIという点です。

wpa_supplicant.confを編集する

さっきdhcpcd.confを編集したときと同じようにwpa_supplicant.confがあるディレクトリまで移動していきます。場所は/etc/wpa_supplicant内にあります。今既に/etc内にいるので以下のコマンドで移動できます。

pi@raspberry /etc $ cd wpa_supplicant
(⇓でもOK)
pi@raspberry /etc $ cd /etc/wpa_supplicant

移動できたらファイルに追記していきますが、同じくsudonanoコマンドを使用して編集していきます。

pi@raspberry /etc/wpa_supplicant $ sudo nano wpa_supplicant.conf

二行だけ元から何か書いてあると思いますが、その下に以下のような感じで書き込んでいきます。

network={
    ssid="hogehogehoge"
    psk="fugafugafuga"
}

これはSSIDがhogehogegogeでパスワードがfugafugafugaという場合ですので各自設定しなおしてください。ちなみにhogehogeといった単語はプログラミング界隈では適当な値という感じの意味を持っています。

設定し終わったらさっきと同じようにCtrl + Oで保存し、Ctrl + Xで終了し、気になるようであればlessコマンドで確認してみてください。今はぎこちないかもしれないですが慣れてくるとマウスでクリックするのと同じぐらいスラスラとコマンドを実行できるようになりますので一緒に頑張りましょう!!!

再起動を実行する

ここまででIPアドレスの固定化とWi-Fiの設定を完了しましたが、まだ設定を反映させていません!

各機能で設定を読み込むためのコマンドもあるのですが、ここはとりあえず再起動しておきます。

以下のコマンドを実行することで再起動できます。たった数文字でマシンが再起動するので大事なサーバーでは取扱注意ですよ!

$ sudo reboot

もしくはsudo shutdown -r nowでもOKですがrebootのほうが単純ですし内部的には結局sudo shutdown -r now実行しているようです。

インターネットに接続できているか確認する

再起動が完了したらまた最初と同じようにpiでログインしますが、その前に起動時のログ(?)を確認してみましょう!

無事Rasbperry PiにIPアドレスが割り当てられている(≒インターネットに接続できる)場合には、画面上のどこかにMy IP address is xxx.xxx.xxx.xxxと表示されているはずです!

とりあえずこれが見えたら安心してください!ないようでしたら続けて以下のコマンドを実行していってみてください。

ping

外部のサーバーへの通信ができるかどうかをチェックするために システム維持の現場ではサーバーが停止してしまっているかどうかなどの簡単な確認に使用します。

今回はgoogle.comにアクセスできるかどうかで判定します。

以下のコマンドを実行するとpingが始まります。停止するにはCtrl + Cを押してください。

$ ping google.com
PING google.com(nrt12s22-in-x0e.1e100.net (2404:6800:4004:80c::200e)) 56 data bytes
64 bytes from nrt12s22-in-x0e.1e100.net (2404:6800:4004:80c::200e): icmp_seq=1 ttl=52 time=12.2 ms
64 bytes from nrt12s22-in-x0e.1e100.net (2404:6800:4004:80c::200e): icmp_seq=2 ttl=52 time=15.0 ms
64 bytes from nrt12s22-in-x0e.1e100.net (2404:6800:4004:80c::200e): icmp_seq=3 ttl=52 time=15.0 ms
64 bytes from nrt12s22-in-x0e.1e100.net (2404:6800:4004:80c::200e): icmp_seq=4 ttl=52 time=17.4 ms
64 bytes from nrt12s22-in-x0e.1e100.net (2404:6800:4004:80c::200e): icmp_seq=5 ttl=52 time=14.5 ms
^C
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 12.214/14.883/17.481/1.674 ms

注目すべき箇所は各行のtime=の部分とstatistics以下のreceivedの数です。

time=コチラからパケットを送信して帰ってくるまでにかかった時間を表しています。つまり相手先に到達できています。receivedも同じく疎通できている回数が表示されているので1以上であればインターネットに接続できています。

インターネットに接続できない場合にはDestination Host UnreachableName or service not knownといった文言が表示されます。

LinuxのCUI世界では`Ctrl + C`を押すことで大抵の処理を中断できます。何か変なコマンドを実行してしまった場合なんかにはとりあえず咄嗟に`Ctrl + C`しておくと被害を最小限にとどめることができるかもしれません…

ifconfig

ifconfigコマンドではネットワーク関係の情報を表示したり設定したりすることができます。LinuxでIPアドレスを手っ取り早く確認するのによく使います。

そのまま実行するだけでOKです。

$ ifconfig
eth0:  ...
lo:    ...
wlan0: ...
       inet 192.168.xxx.xxx  netmask 255.255.255.0  broadcast 192.168.xxx.255
       ...

wlan0の部分が無線デバイスの設定となっています。eth0は有線接続している場合に値が表示されます。loはローカルループバックというデバイス(?)で常にアドレスは127.0.0.1となっています。これについてはWEBサーバーを作るときなんかに説明いたします。

inetの部分にdhcpcd.confに指定したIPアドレスが入っていれば正常に固定IPで運用できています。ここに何も入っていない場合には正常にインターネットに接続できない可能性があります。

原因を探る

今回修正したファイルは2つで、/etc/dhcpcd.conf/etc/wpa_supplicant/wpa_supplicant.confです。どちらかで何か記述ミスが発生している可能性があります。

dhcpcd.conf

interface wlan0
static ip_address=192.168.11.50/24
static routers=192.168.11.1
static domain_name_servers=8.8.8.8

以下の点をチェックして問題ないかを確認してください。

  • 各単語の綴りは正確か
  • _-を間違えていないか
  • IPアドレスの書式が間違っていないか
  • ip_addressに指定しているIPアドレスが既に使われていないか
  • 末尾の/24を忘れていないか
  • routersに指定しているIPアドレスが無線LANルーターのものか

などです。

wpa_supplicant.conf

network={
    ssid="hogehogehoge"
    psk="fugafugafuga"
}

以下の点をチェックして問題ないかを確認してください。

  • 各単語の綴りは正確か
  • SSIDとパスワードは正確か
  • SSIDの_-を間違えていないか
  • ""で値を囲んでいるか
  • {}でパラメータを囲んでいるか

等です。設定しなおしたらsudo rebootで再起動してください!そしてそのあとにpingコマンドなどで疎通を確認してください(;'∀')

外部からのSSH接続を有効にする

ここまででインターネット接続ができるようになりました。特に意識はしなくてもいいですが、無線LANルーターに接続している状態なので自宅内のネットワークに参加したことになります。これにより同じ無線LANルーターに接続しているPCやスマホなどからRasbperry Piを設定次第で遠隔操作するようにできます。

raspi-config

その設定を行うにはraspi-configというコマンドでRasbperry Pi用の大まかな設定を行うことができます。このコマンドには管理者権限が必要なのでsudoをつけて実行します。

$ sudo raspi-config

成功すると青い画面が表示されます。矢印キーで移動、エンターキーで選択となります。

5 Interfacing Optionsを選択し、その先のP2 SSHを選択します。さらに<Yes>を選択することで外部からのSSH接続が可能となります。SSH接続に関してはほかにも説明したいことがありますが以下の2点を抑えておきましょう。

  • 入力する内容が暗号化されているので安全
  • 鍵認証によるログインが可能(=毎回パスワードを入力しなくてもよくなる)

設定が完了したら⇒キーを押して<Finish>を選択します。再起動を要求されると思いますので再起動します。

これで外部からSSH接続することができるようになりました。少し長かったかもしれませんがお疲れ様です!初期設定で一番めんどくさい部分はこれで終わりです🎁

最後に

初めてLinuxを触る方にはかなり難しい内容かもしれませんでしたが、私も大学生の頃に初めて触ったときもおんなじことをするのに2日ほどかかりました。。。(笑)

その時に引っかかったこととかもまとめて書いてあるはずなので皆さんはすんなり通っているかと思います。。!もしわからない点や間違っている部分があればぜひともコメントお願いいたします👍👍

次の記事

3 - ユーザーの追加など最後の設定