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

設定完了

これで、設定は完了です。パスワード認証で接続してみて拒否されることを確認してください。

コメントを残す

メールアドレスが公開されることはありません。