teppay’s log

セキュリティ、CTF、機械学習などに興味があります。情報系学生です。興味のあることを思い立った時に書きます。曖昧なことの整理にも使います。月1が目標です。

Raspberry Pi 3 Model BをUSBキーボードなしでセットアップする。[前編]

動機

  • ずっとラズパイで何かをやってみたかった。
  • サーバの勉強をしたかった
  • Slackのbotを作ってみようと思ったが、常時起動しているマシンがないため、かるく諦めていた。
  • なんとなく思い立って購入した。

用意したもの

  • MacBook Pro
  • Raspberry Pi 3 Model B(写真右)
  • Raspberry Pi 3用ACアダプタ(写真左)
  • micro SDカード 16GB(写真中央)
  • LANケーブル
  • HDMIケーブル(起動確認のため)
  • TV(起動確認のため) f:id:teppay:20170608230638j:plain

目標

  • ラズパイを起動する
  • MBPからsshでラズパイにアクセスする。
  • Wi-fiにつなぐ
  • 公開鍵認証でsshログインできるようにする。

1. ラズパイを起動する

1.1 OSのダウンロード

まずはいくらお手軽コンピュータといえど、OSがなければ動きませんので、OSをインストールします。
サーバ的な使い方の予定でGUIいらないので、Raspbian Liteを選びました。

https://www.raspberrypi.org/downloads/ > RASPBIAN > RASPBIAN JESSIE LITE
でOSをダウンロード
うちの回線くそなのでTorrentで行こうと思ったらうまく行かなかったので、Zipでダウンロードしたら1時間くらいかかった…

落としたZipファイルを解凍して、念のためSHA-1ハッシュを確認しました。(sha1 : c24a4c7dd1a5957f303193fee712d0d2c0c6372d)

sha1sumがなかったので、brewでインストールしました。

$brew update
$brew install md5sha1sum
$sha1sum 2017-04-10-raspbian-jessie-lite.img
3a38e94902cc2e478ac1ff9a2677e6ca0f30b94f  2017-04-10-raspbian-jessie-lite.img

あれ、、、違う、、、

$ sha1sum 2017-04-10-raspbian-jessie-lite.zip 
c24a4c7dd1a5957f303193fee712d0d2c0c6372d  2017-04-10-raspbian-jessie-lite.zip

解凍後のファイルをchecksumしていました笑

ダウンロード完了!

1.2 OSのインストー

dfコマンドでmicroSDが/dev/disk2s1にマウントされていることを確認して、アンマウント後にddコマンドでOSをコピー! ここで注意する必要があるのは、ddコマンドのコピー先は、/dev/disk2s1ではなく、/dev/rdisk2とします。
s1を消して、rを追加するそうです。s1はよくわかりませんでしたが、rを追加することで、バッファしないで書き込むため高速になるそうです。 ※/dev/disk2s1の部分は環境によって異なります。

$df
[省略]
/dev/disk2s1                               30302208      4992  30297216     1%       0          0  100%   /Volumes/NO NAME
$diskutil unmount /dev/disk2s1
$sudo dd bs=1m if=[解答した.imgファイルのパス] of=/dev/rdisk2

これでインストールできたと思うので、とりあえず一回起動してみようと思います。

  • microSDを安全に取り出す!
  • ラズパイに挿入!
  • HDMIケーブルでTVと接続!
  • 電源を接続!

f:id:teppay:20170609011153j:plain

はいきた!
OSのインストール成功しました!!!

2. MBPからsshでラズパイにアクセスする。

2.1 ログインせずにsshを起動する

「ログインせずにsshを起動する」(パワーワード)

ちょっと前までは、デフォルトでsshが起動していたそうですが、セキュリティ的に明らかに問題がありますから、最近のRaspbianではデフォルトではsshを起動していません。

USBキーボードがあれば、ラズパイに接続してログインして設定すればいいのですが、ありませんので、「ログインせずにsshを起動する」ことが必要です。

そこで、どのように「ログインせずにsshを起動する」かというと、
microSDのboot配下にsshというファイルを作る」だけで良いそうです。
そういう仕様だそうです。
早速やってみます。
f:id:teppay:20170609013402p:plain

こんな感じですかね?これでラズパイに戻してみます。

2.2 sshでログイン

次に、sshが起動したかどうかを確認するために、ルータとラズパイをLANケーブルでつなぎ、LAN内のラズパイを探します。 電源を入れて、LANに接続した時点でIPアドレスは付与されているらしいので、ARPを使って探します。

$arp -a
[省略]
? (192.168.1.4) at b8:27:eb:53:3d:95 on en0 ifscope [ethernet]

MACアドレスの上位6桁がベンダIDであることを利用してラズパイを見つけます。
Raspberry Pi FoundationのベンダIDはB8-27-EBであるため、ラズパイに付与されたIPアドレスは192.168.1.4であることがわかります。

さらに、sshが起動しているかをポートスキャンで確認します。

$nmap 192.168.1.4
Starting Nmap 7.31 ( https://nmap.org ) at 2017-06-09 01:44 JST
Nmap scan report for 192.168.1.4
Host is up (0.027s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
110/tcp  open  pop3
143/tcp  open  imap
3128/tcp open  squid-http
8080/tcp open  http-proxy

はい。
22番ポートで起動しているのがわかります。 デフォルトでは、
user:pi
pass:raspberry なので

$ssh pi@192.168.1.4
pi@192.168.1.4's password: 
pi@raspberrypi:~ $ sudo shutdown -h now

来ました!!
そして疲れたのでログインした途端にシャットダウンしてやりました笑

まとめ

  • ラズパイを起動できた
  • MBPからsshでラズパイにアクセスできた

次にやりたいこと

  • Wi-fiにつなぐ
  • 公開鍵認証でsshログインできるようにする。