公開鍵認証で Mac から Raspberry Pi に SSH 接続する

これまで Mac から Raspberry Pi に SSH 接続する際は、ターミナルで普通にパスワード認証でログインしていた。公開鍵認証を使えばパスワードの入力が不要だとは知っていたけど、なんだか面倒な気がしてやらずにいたけど、やってみることにした。そして、実際にやってみると、結構簡単だった。

参考にしたのは以下のサイト。仕組みから詳しく説明してある。

ツール・ラボ » Raspberry Piに公開鍵認証を使ってssh接続する
https://tool-lab.com/2013/11/raspi-key-authentication-over-ssh/

基本的にはこのサイトの通りなんだけど、少し情報が古い部分があったので改めてまとめてみる。VMware Fusion 上の Raspberry Pi Desktop に対して設定したけど、普通の Raspberry Pi でも同じようになると思う。

環境:Mac(High Sierra)、Raspberry Pi Desktop

(1)Mac で鍵ペアを作成する。

$ ssh-keygen -t rsa

この際保存ファイル名を聞かれてくる。しかもデフォルトの保存ファイルがいつも同じなので、もし複数の鍵ペアを管理するには毎回分かりやすい名前にしたほうがいいと思った。だから私は保存ファイル名を /Users/[ユーザー名]/Documents/SSH_KyePair/RasPi(フルパスで指定する)のような感じでドキュメントフォルダ内に専用フォルダを作って管理することにした。

パスフレーズも聞かれるがとりあえず入力しない(2回リターンキーを押す)。

すると、RasPi と RasPi.pub のような2つのファイルが作成される。拡張子がない方が秘密鍵、pub の拡張子の方が公開鍵だ。

(2)1の公開鍵を Raspberry Pi に転送する。

$ scp [1の公開鍵へのパス] pi@raspberrypi.local:

最後のコロンを忘れずに。その際 Raspberry Pi のパスワードを聞かれる。

これで Raspberry Pi の /home/pi ディレクトリに公開鍵が転送される。

(3)[以下 Raspberry Pi で操作] .ssh ディレクトリを作成(もともと作成されていた)。

$ mkdir .ssh

(4)/home/pi ディレクトリの Raspi.pub を .ssh ディレクトリに移動、名前を変更する。

$ mv Raspi.pub .ssh/authorized_keys

(5).ssh ディレクトリおよび .ssh/authorized_keys のパーミッションを変更する。

$ chmod 700 .ssh

$ chmod 600 .ssh/authorized_keys

(6)/etc/ssh/sshd_config を以下のように編集、保存。

変更前:#PubkeyAuthentication yes
変更後:PubkeyAuthentication yes

これは Raspberry Pi Stretch の場合で、それ以上のバージョンの Raspbian だと書き方が変わるみたい。

(7)SSH サーバーを再起動。

$ sudo /etc/init.d/ssh restart

これで、以下のコマンドで Mac からアクセスし、パスワード入力が不要になる。

$ ssh -i [秘密鍵へのパス] pi@raspberrypi.local