いきさつ
Raspberry Piのセットアップでsshを有効にしましたが、パスワード認証でした。
セキュリティー的に、パスワード認証は脆弱。
LAN内だけで運用している分にはそれほど問題になることはないんでしょうけど、WANから操作しようとしていますので、ちゃんとしておかないとヤバイ。
まぁ、うちのLANはNXR-G100が門番張ってますので大丈夫だと思いますが、やはり鍵をかけておくことは大事。
ということでRSA鍵認証を導入しました。
記事内のコマンドなどは、セキュリティーの関係で一部「x」でマスクしている箇所があります。
環境
- Macbook Pro (mid 2015) macOS Mojave 10.14.5
- Mac mini (late 2012) macOS Mojave 10.14.5
- iPad Pro 10.5in iOS 12.3.1
- Raspberry Pi 3 Model B+
RSA鍵の作成
クライアント(Macbook Pro)でRSA鍵を作成
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/xxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxx@xxx.local
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----[SHA256]-----+
作成した公開鍵を、Raspberry Piに転送
$ scp ~/.ssh/id_rsa.pub <username>@<hostname>.local:
公開鍵を配置
この操作はRaspberry Piで
# .sshフォルダを作成して、パーミッションを変更
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
# 公開鍵をauthorized_keysに配置し、パーミッションを変更
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
# クライアントから転送した公開鍵を削除
$ rm ~/id_rsa.pub
.sshフォルダがあれば、作成しなくても大丈夫。
.sshフォルダとauthorized_keysのパーミッションを設定するのを忘れずに。
ssh接続
作成したRSA鍵で接続してみる
$ ssh -i ~/.ssh/id_rsa <hostname>
毎回公開鍵を指定するのは面倒なので、簡単に接続できるように設定
$ nano ~/.ssh/config
Host <name>
HostName <hostname>
User <username>
Port 22
IdentityFile ~/.ssh/id_rsa
こんな感じで接続できます
$ ssh <name>
クライアントを追加 Mac mini編
今度は、Mac miniからRSA鍵認証できるように設定
Mac miniで、RSA鍵を作成
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/xxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxx@xxx.local
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----[SHA256]-----+
公開鍵をMac miniからRaspberry Piに転送
$ scp ~/.ssh/id_rsa.pub <username>@<hostname>.local:
Raspberry Piで、公開鍵をauthorized_keysに追加
$ sudo cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
# クライアントから転送した公開鍵を削除
$ rm ~/id_rsa.pub
あとは、Mac miniで.ssh/configを書いてあげれば、カンタン接続できる
クライアントを追加 iOS編
iPadのsshクライアントアプリは、こちらを使ってます
Shelly – SSH Client
https://apps.apple.com/jp/app/shelly-ssh-client/id989642999
接続設定
「Key File」→「Create New Key」とタップ
Key Nameに鍵の名前を
PassPhraseにパスワードを
設定が終わったら、「Create」をタップすると鍵が作成される
「Export Public Key」をタップ
クリップボードに作成した公開鍵がコピーされるので、適当なアプリに貼り付け
あとは、Raspberry Piのauthorized_keysに公開鍵を追加