つよつよエンジニアになりたい

つよつよエンジニアになりたいエンジニアが日々の学びや気づきをアウトプットしていきます

Raspberry Piにssh公開鍵認証で接続する

数ヶ月前に購入したラズパイで色々遊びたいと思ったので、まずはラズパイにssh公開鍵認証で接続できるようにしたいと思います。

デフォルトではパスワード認証になっているので設定ファイルを編集します。

環境

ローカルPC

ラズパイ

ローカルPCでの作業

鍵ペアの作成

まずローカルPCでは公開鍵と秘密鍵のペアを作成します。今回はラズパイ用のディレクトリを作成し、そこに鍵ペアを格納します。

ホームディレクトリ配下に raspberrypi ディレクトリを作成

mkdir ~/.ssh/raspberrypi

確認

ls ~/.ssh

raspberrypiが表示されていたらOK。 次に、ssh-keygenコマンドで鍵ペアの作成します。

ssh-keygen -t rsa

Enter file in which to save the key で鍵ペアを格納したい場所を指定します。私は以下のように指定しました。

/Users/[ユーザ名]/.ssh/raspberrypi/id_rsa

鍵ペアが作成されたことを確認します。

ls ~/.ssh/raspberrypi

id_rsa   id_rsa.pub

公開鍵をラズパイに送る

scpコマンドを使って公開鍵を送信します。
書式

scp [鍵ファイル] [ラズパイユーザ]@[ラズパイIPアドレス or ホスト名]:[ディレクトリ]
scp ~/.ssh/raspberrypi/id_rsa.pub pi@raspberrypi:~/.ssh

ラズパイでの作業

転送された公開鍵ファイルのファイル名変更

先ほどのSCPコマンドでローカルのPCの公開鍵は ~/.sshディレクトリにid_rsa.pubというファイル名で格納されています。そのファイル名を authorized_keys に変更します。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 元のid_rsa.pubは削除
rm ~/.ssh/id_rsa.pub

ファイル名を変更しなくても設定ファイルのAuthorizedKeysFile項目でファイル名を指定できます

ファイルの権限編集

管理者のみが閲覧、書き込みできるようにauthorized_keysファイルの権限を編集します。

chmod 600 ~/.ssh/authorized_keys

# 権限確認
ls -l ~/.ssh
-rw------- 1 [ユーザ] [グループ] 500 1

sshの設定

/etc/ssh/sshd_config を編集して以下の条件を満たすようにします。

  • パスワード認証を禁止する
  • rootログインを禁止する
  • 公開鍵認証を許可する
# エディタ起動
sudo vi /etc/ssh/sshd_config

# /etc/ssh/sshd_config編集
# rootログインの禁止
PermitRootLogin no

# 公開鍵認証の許可
PubkeyAuthentication yes

# パスワード認証の禁止
PasswordAuthentication no

sshの再起動

systemctl restart ssh

ラズパイに接続

ssh pi@raspberrypi

ローカルPCの~/.ssh/configを設定することでより短く柔軟に接続することができるので設定しておいた方が便利かと思います。

qiita.com

これでラズパイへのssh公開鍵認証による接続が終わりました!これからは、ラズパイで内部向けDNSやWebサーバを構築してみたり、外部から接続できるようにしてみたりと色々遊んでいきたいと思います。🙌