SSHを公開鍵認証で接続するための初期設定
ラズパイはSSHで使用するようになると母艦PCから操作できるようになるので使いやすさが増します。SSHで接続するようにするまでの初期設定と操作手順を紹介します。
もくじ(Index)ラズパイ関連の目次へ戻る(工事中)
SSH接続を可能にする方法
Raspbianは初期設定ではSSH接続はできないようになっています。SSH接続を可能にする方法は3種類あります。
※GoogleAIYProjectのOSはデフォルトでSSHはONになっています。
①セットアップ時にEnableにする。
Raspbianを書き込んだmicroSDカードのbootというパーティションのルートにsshという空ファイルを作成します。
bootパーティションの操作はWindowsからでも可能です。
②GUIでEnableにする。
下記のように操作します。
③コマンドラインでEnableにする。
ターミナルから「sudo raspi-config」を実行します。
sudo raspi-config
「5 Interfacing Options」→「P2 SSH」→「はい」→「了解」という順番で操作します。
●1行で指定したい場合は下記のコマンドを実行
sudo raspi-config nonint do_ssh 0
パスワード認証で接続してみる。
まずはクライアントからパスワード方式で接続してみましょう。デフォルトのポートは22です。
鍵の作成
公開鍵方式の接続に必要なファイルを作成します。ターミナルを起動して下記のようにコマンドを実行していきます。
cd ~
mkdir .ssh
chmod 700 .ssh
cd ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t rsaを実行すると下記のように聞いてきます。
ファイルを出力する場所とパスフレーズを指定します。
パスフレーズは省略可能です。
Enter file in which to save the key (/home/pi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
2つのファイル(id_rsa.pubとid_rsa)が作成されるのでid_rsa(秘密鍵)というファイルはクライアント側へSCP、FTPまたはUSBメモリ等を使ってコピーします。
id_rsa.pub(公開鍵)は名前を変えてパーミッションを変更します。下記のようにコマンドを実行してください。
# ~/.ssh/authorized_keysが無い場合
cd ~/.ssh
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys
# 既に~/.ssh/authorized_keysがある場合
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
rm id_rsa.pub
公開鍵認証で接続してみる。
クライアント側でid_rsaを使って公開鍵認証で接続してみましょう。Linux系の場合は下記のように接続します。
ssh -i ~/.ssh/id_rsa pi@raspberrypi.local
sshd_configの設定変更
公開鍵認証が成功したらラズパイ側でパスワード認証をOFFにしておきましょう。
sudo vim /etc/ssh/sshd_config
以下のパラメータを編集します。
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
sshd_configを変更したらsshサービスを再起動します。
(Raspbianだとsshdではなくsshなので注意しましょう。)
sudo systemctl restart ssh.service
【補足】セキュアな設定
セキュリティを高めるためにsshd_configの下記のパラメータも変更した方がいいです。
# ポート番号22以外にする。(ポート番号は自分で決めましょう。)
Port 2222
# Rootログインを無効にする。
PermitRootLogin no
# 使わない認証を拒否
KerberosAuthentication no
GSSAPIAuthentication no
設定完了
これで、設定は完了です。パスワード認証で接続してみて拒否されることを確認してください。