Raspberry Pi 3インストールから初期設定まで

インストール

今回は,2017-04-10-raspbian-jessie-lite.imgを使用しました. 各自公式からダウンロードしてきてください.

www.raspberrypi.org

(追記) raspberry-pi-imager を使うと SD へのインストール周りはかなり簡単にできました

raspberry-pi-imager のインストールは以下のコマンドから。 操作方法は割と直感的だったので省きます。(もしわからなければ別途調べてください)

$ brew install --cask raspberry-pi-imager

該当SDの確認

$ diskutil list
...
/dev/disk4 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.0 GB    disk4
   1:                 DOS_FAT_32 RASPBIAN                31.0 GB    disk4s1

該当のSDを見つけます.

SDのフォーマット

$ diskutil eraseDisk MS-DOS RASPBIAN /dev/disk4
...
Finished erase on disk4

RASPBIANの部分はフォーマット後の名前なのでお好みで設定してください

SDへ書き込み

以下のコマンドを実行し,SDに書き込む.(10分ほど?適当に放置して待ちましょう)

$ diskutil unmountDisk /dev/disk4
$ sudo dd if=path/to/file/2017-04-10-raspbian-jessie-lite.img of=/dev/disk4 bs=1m

以上を行うと準備は完了なので,RaspberryPiに挿入して電源を入れましょう 最初はWifi等の設定を行うまでネットに接続できないので,LANケーブルを挿しました.

初期設定

初期のパスワード

user name: pi
password: raspberry

rootのパスワード設定

sudo passwd root

以下からはrootで行う

$ su -
password

Update

とりあえず最新にします

$ apt-get update && apt-get upgrade
$ apt-get install vim # 後々の設定ファイル編集のために入れておく

E: Broken packages と言われて失敗するとき ↓

update / upgrade fails on older Raspian Installation - Raspberry Pi Forums

sudo apt full-upgrade
sudo apt dist-upgrade

Wifiの接続

SSIDとパスワードを設定ファイルに保存しておきます. このファイルはパスワードが記載されているので,外部に公開しないようにしましょう.

$ export PASSWORD=password
$ export SSID=wifi-ssid
$ wpa_passphrase $SSID $PASSWORD >> /etc/wpa_supplicant/wpa_supplicant.conf

(追記)

/boot/ 以下に wpa_supplicant.conf というファイルをおいておけば起動時にいい感じにしてくれる

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="{Wi-FiのSSID}"
    psk="{Wi-Fiのパスワード}"
    scan_ssid=1
}

Time Zoneの設定

とりあえず日本時間に変更します.

$ raspi-config

「4 Localisation Options」-> 「I2 Change Timezone」->「Asia」-> 「Tokyo」

or

$ sudo timedatectl set-timezone Asia/Tokyo

SSHの有効化

デフォルトではSSHで接続できないので,設定をONにします.

$ raspi-config

「5 Interfacing Options」-> 「P2 SSH」->「Yes」

(追記) /boot/ 以下に ssh という空ファイルをおいておけば起動時にいい感じに ssh を有効化してくれる

接続先IPは以下で確認

$ ip route
default via 192.168.1.1 dev wlan0  metric 303
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.42  metric 303

今回の場合は192.168.1.42となります.

$ ssh pi@192.168.1.42

で接続できるはずです

おまけの設定

RaspberryのIPを固定する

上記の設定で,SSHすることができましたが,このままだとRaspberry piを再起動した際に,IPが変わってしまいSSHできなくなる可能性があります. そのたびにディスプレイを挿して,IPを確認して...という作業はめんどうなので,IPを固定化します.

上記の例では,サブネットマスクが,192.168.1.0/24なので,左から24bit分の192.168.1までがネットワークアドレスであり,これ以降の8bitは好きに使用して良いことがわかります.

好きに設定はできますが,特にこだわりがなければ,とりあえず今のIP( 192.168.1.42 )で固定すればよいかと思います. 以下のファイルを編集し,設定を追記していきます.

$ sudo vim /etc/dhcpcd.conf

以下の設定を追記

interface wlan0
static ip_address=192.168.1.42
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

これで固定化できました. 再起動してもIPが変わらないことを確認してください.

SSHのポート変更

22番のままだと悪意のあるユーザに推測されやすいためセキュリティの面で不安があります. 変更する際は,/etc/ssh/sshd_configのPort 22を変更するとSSHの接続Portを変更できます.

ユーザの追加と削除

デフォルトのpiユーザ名はすべてのRaspberry piで共通なので,悪意のあるユーザに推測されやすいです.(パスワードも共通なので,変更する必要があります) 外部からアクセスできるようにする際は,ユーザを新たに作り直して,攻撃されにくくしておくとよいです.

ユーザ(hoge)の追加

$ sudo adduser hoge
$ sudo gpasswd -a hoge sudo

piユーザの削除

$ sudo userdel pi

公開鍵認証

パスワードでなく,公開鍵認証でログインできるようにします. ローカルのマシンで.以下のように,鍵を生成しRaspberry piに送信します.

$ ssh-keygen -t rsa
$ scp -P [port_number] ~/.ssh/id_rsa.pub [username]@[ip]:
$ ssh -P [port_number]  [username]@[ip]

raspberrypi側で,送られてきた鍵を登録します.

$ mkdir .ssh
$ mv ~/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ sudo service ssh restart

ローカルのマシンの別ターミナルで確認します.

$ ssh -p [port_number] -i ~/.ssh/id_rsa [username]@[ip]

うまくsshできることが確認できたら成功です.

公開鍵認証でログインできるようになったので,パスワードでログインできないようにして,セキュリティを高めます. raspberry側で,設定ファイルを以下のように変更します.

$ sudo vim /etc/ssh/sshd_config

- の部分を + になるように書き換えます.

- # PasswordAuthentication no
+ PasswordAuthentication no

ssh configの設定

SSHする際に,ipなど,入力するコマンドが長くて面倒なのでSSHコマンドを簡略化します.

ローカルのマシンで,~/.ssh/configに以下を追記.

Host raspberry
    Hostname [ip]
    Port [port_number]
    User [username]
    IdentityFile ~/.ssh/id_rsa

これを記載することで,sshを簡略化することができます.

$ ssh -p [port_number] -i ~/.ssh/id_rsa [username]@[ip] # 通常はこれ
$ ssh raspberry # configを設定することで簡略化できる

firewall

セキュリティを高めるために,無駄なportにはアクセスできないようにしておきます.

$ sudo apt-get install ufw -y
$ sudo ufw default deny
$ sudo ufw allow 80/tcp
$ sudo ufw allow [ssh port_number] # SSH用のポートは開けておく
$ sudo ufw enable

自動ログイン解除

sudo vim /etc/lightdm/lightdm.conf 

autologin-user=pi の部分を削除する or コメントアウトする

これでうまくいかない場合は raspi-config からの設定も必要 (Boot Options)