こんにちは、たねやつです。
前回までの部分でOSをSDカードにインストールしてRaspberry Piを起動させるところまで完了しました。
現状はRaspberry Pi自体はインターネットには繋がっていない状態で、キーボードも直接接続しているためめちゃくちゃ不便ですよね😣
今回はいつも使っているWindowsやMacのPCからRasbperry Piを遠隔操作できるように設定します。今回の設定を終えるとHDMIケーブルもキーボードもRaspberry Pi本体に直接接続する必要がなくなります!
また、今回からバリバリLinuxコマンドを使用しながら設定ファイルの編集などを行っていきます。できるだけ丁寧な解説を心がけていきますが、もし不明な点やうまくいかないところがありましたら遠慮なくコメントなどに残していってください!
- 前の記事
- 無線LANルーター本体のIPアドレス、SSIDを特定する
- Raspberry Piにログインする
- IPアドレスの固定
- 無線LANルーターに接続する
- インターネットに接続できているか確認する
- 原因を探る
- 外部からのSSH接続を有効にする
- 最後に
- 次の記事
前の記事
無線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の頭文字と覚えるとすんなり覚えられます!
それではコマンドを実行してみます!ファイルが存在しているディレクトリは/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
はとりあえず書いておいてください。
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の画面から抜けることができます。q
はQuit
の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
移動できたらファイルに追記していきますが、同じくsudo
とnano
コマンドを使用して編集していきます。
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 Unreachable
やName or service not known
といった文言が表示されます。
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 - ユーザーの追加など最後の設定