Raspbianをヘッドレスインストールする (SSHの有効化)

Raspberr Pi

Raspbianのインストールに関しては2013に一度書いているのですが、2016/11/25版のraspbian-jessieよりデフォルトでSSHが無効になったので、これに対応したインストール手順に関して書きます。

はじめに

Raspberry Pi をヘッドレスインストールする方法に関しては、以前 ディスプレイレスでもOK - Raspberry Pi にOSをインストールする で記載していましたが、Raspbian 2016-11-25 にてデフォルトでSSHが無効になりました。

これに伴いヘッドレスインストールの方法に関して書き直します。

※SSHをデフォルト無効にした理由に関しては A SECURITY UPDATE FOR RASPBIAN PIXEL に記されています。IoTデバイスに対する攻撃が多数報告されているため、セキュリティ上の理由からデフォルトでSSH無効にしたという事が書かれています。
SSHのデフォルト無効以外にも、初期パスワードのままでSSHが有効の場合、警告が表示されるようにした事も記されています。

環境

作業環境は以下

作業用PC Windows 10
Raspbian 2017-01-11-raspbian-jessie

"はじめに" に書いたようにヘッドレス環境想定です。

  • ディスプレイ、キーボード、マウスの接続なし
  • LANへの接続は有線での接続 (DHCP)

手順

インストール手順を示します。

イメージファイルの取得

Raspbian のイメージファイルを取得します。

Download Raspbian for Raspberry Pi ページよりイメージファイルをダウンロードします。

Raspbian download

※WITH PIXEL と LITE の二つあるが、LITE は最少構成版でデスクトップ関連のパッケージが含まれない。
サーバ用途等でデスクトップを利用しない場合にはLITE版、デスクトップアプリも利用したい ( Minecraft + Scratch + Scratch2MCPI で遊びたいとか ) 場合には WITH PIXEL を利用する等、適宜使い分けてください。

イメージファイルの展開

ダウンロードしたZIPファイルを展開します。

The Raspbian with PIXEL image contained in the ZIP archive is over 4GB in size, which means that these archives use features which are not supported by older unzip tools on some platforms. If you find that the download appears to be corrupt or the file is not unzipping correctly, please try using 7Zip (Windows) or The Unarchiver (Macintosh). Both are free of charge and have been tested to unzip the image correctly.

https://www.raspberrypi.org/downloads/raspbian/

Windows 10 の場合、エクスプローラの機能で展開できます。
展開後 2017-01-11-raspbian-jessie.img というファイルが作成されます。

※ファイル名はバージョンにより異なる。

※ダウンロードページに上記説明がある通り、WITH PIXEL 版は 4GBを超えており、古いunzip等のツールでは正しく展開できない場合があります。
正しく展開できるツールとして Windows では 7Zip, Mac では The Unarchiver が挙げられています。
ファイルが正しく展開されない場合、これらツールを利用してみましょう ( 何れも無料で利用可能 )。

イメージファイルの書き込み

展開したイメージファイルを(micro)SDカードに書き込みます。

imgファイルをSDカードに書き込むためには、そのためのソフトウェアが必要です。
ここでは Win32 Disk Imager というソフトウェアを利用した方法を説明します。

※imgファイルをそのままSDカードにコピーして、「Raspberry Piが動作しない!初期不良だ!」とか言う人もいるらしい。。。 それ手順が不良です。

  1. 書き込み先のMicroSDカードをPCのカードスロットに挿入します。
  2. Win32 Disk Imager のバイナリファイルを取得して解凍します。
  3. 解凍先の Win32DiskImager.exe を実行します。
  4. Win32DiskImagerが起動するので、Image File に先に解凍してあるRaspbianのイメージを指定します。
    ( ファイル選択ダイアログが開くので、先に展開した img ファイルを指定する )
    Win32 Disk Imager
  5. イメージファイルを選択したら、書き込み先 ( Device ) を確認して、[ Write ] ボタンをクリックします。書き込みが開始されます。
  6. 書き込みが完了したらOKです。

sshファイルの作成

ヘッドレスでインストール、及び、その後の設定作業を行う場合、sshクライアントを接続しての作業が必須でしょう。
上述の通り、2016-11-25版からSSHはデフォルト無効になりましたが、SSHを有効にするための方法が用意されています。

The boot partition on a Pi should be accessible from any machine with an SD card reader, on Windows, Mac, or Linux. If you want to enable SSH, all you need to do is to put a file called ssh in the /boot/ directory. The contents of the file don’t matter: it can contain any text you like, or even nothing at all. When the Pi boots, it looks for this file; if it finds it, it enables SSH and then deletes the file. 

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/

A SECURITY UPDATE FOR RASPBIAN PIXEL によると、/boot/ ディレクトリに ssh という名前のファイルを置けばOKとの事。
この boot ディレクトリは Win, Mac, Linux の何れからでも SDカードリーダ経由でアクセス可能です。

Raspbian は起動時にこのファイルが存在するかチェックし、存在する場合 SSH を有効にした後、このファイルを削除します。

ファイルの中身は何らかのテキストを書いても構いませんし、空っぽでも構いません

作成手順

Windows の場合、以下のようにすればよいでしょう。

  1. SDカードのの中身をエクスプローラで確認します。
  2. 以下のように boot ディレクトリの中身が表示されるので、ssh ファイルを作成します。
    ( [ 新規作成 ]>[ テキストドキュメント ] としてファイルを作成すればよいでしょう。但し、拡張子は無しで作成する事 )

    ※拡張子が表示されない場合、フォルダーオプションの "登録されている拡張子は表示しない" のチェックを外す事。

    sshファイル

Raspbian の起動

ssh ファイルの書き込みまで終わったら、SD カードを作業用 PC から取り出し、Raspberry Pi のカードスロットに挿入して Raspberry Pi を起動します。

  1. OSイメージを書き込んだSDカードを rpi のカードスロットに挿入する。
  2. ネットワークケーブルを接続する。
  3. 電源をONにします ( microUSB のケーブルを差し込む )。
    rpiのLEDが点灯します。

SSHログイン

その後の作業はSSH経由でrpiに接続して行う事になります。適当なSSHクライアントを利用してrpiに接続しましょう。

※rpi に割り当てられたIPアドレスはDHCPサーバのアドレス払い出し状況等で当たりをつける等してください。

Raspbianの初期 id / password は pi / raspberry になっているので、このアカウントを利用してログインし、作業を行います。

※下図は PuTTYjp での接続例

putty での接続

デフォルトパスワードの変更

上述の通り、IoTデバイスに対する攻撃が増加している昨今、デフォルトパスワードのままでの運用はセキュリティ上問題があります。適当なパスワードに変更しましょう。

デフォルトパスワードを変更する場合、以下の何れかで行う事が可能です。

  • passwd コマンド
    pi ユーザで SSH ログインした後、コマンドラインから passwd コマンドを実行する事で変更できます。
    $ passwd
    Changing password for pi.
    (current) UNIX password:
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    
    最初に現在のパスワードが聞かれるのでこれを入力し、その後変更するパスワードを(二回)入力してください。password updated successfully と表示されればOKです。
  • raspi-config

    raspi-config コマンドでも設定可能です。

    $ sudo raspi-config
    
    とすると、CUIベースのグラフィカルツールが起動するので、"2 Change User Passwrd" を選択してください。
    その後変更後のパスワードを二回聞かれるので正しく入力すればOKです。

まとめ

ヘッドレスインストールする事が多いので、最初に SSH 接続できなかった際には焦りましたが、一手間加えるだけなので、手順を覚えればこれまでのインストール手順と大差ないかと思われます。

これを期にデフォルトパスワードで運用している方はパスワードの変更に関しても検討しましょう。プライベートネットワーク上にあるからと安心していたりすると、いつの間にかハッキングされていたり、サービスの一部が勝手に公開されたりするなんて事も。。。