Ruspberry pi 3 b+でssh公開鍵認証を設定する。
購入からssh接続まで
購入したラズパイのキット https://www.amazon.co.jp/gp/product/B07DLVW23C/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1
OS(raspbian)は最初からプリインストールされているのでそのまま組み立てて接続。
キーボードの日本語入力などの初期設定を済ませる。
ipアドレスを固定する。
[pi]~$ sudo vi /etc/dhcpcd.conf
(略) interface wlan0 static ip_address=192.168.0.XXX // 固定したいipアドレスを入力 static routers=192.168.0.1 // ルーターのipアドレスを入力 static domain_name_servers=192.168.0.1 // 同上
[mac]~$ ssh pi@192.168.0.XXX
※ラズパイのIDとPASSの初期値はpi raspberryなので、パスワードは$ sudo passwd
変更しておく。
公開鍵認証接続の設定
mac上で鍵の生成
[mac]~$ ssh-keygen -t rsa
パスフレーズを設定する。
※既に鍵がある人は省略。
公開鍵をラズパイに設置。
[mac]~$ scp -P [port番号] ~/.ssh/id_rsa.pub pi@192.168.0.XXX: pi@192.168.0.XXX's password: id_rsa.pub 100% 401 152.5KB/s 00:00
※[port番号]はラズパイ上の~/etc/ssh/sshd_configで設定されているポート番号
※ポート番号は初期設定で22番なのだが、ロボット対策のために変更しておく。
これを実行するとラズパイのホームディレクトリ上に鍵が置かれる。
鍵を別の場所に保管して、パーミッションを変える。
[pi]~$ ls id_rsa.pub python_games ダウンロード テンプレート デスクトップ ドキュメント ビデオ 音楽 画像 公開 [pi]~$ mkdir .ssh [pi]~$ cat id_rsa.pub >> ~/.ssh/authorized_keys [pi]~$ ls id_rsa.pub python_games ダウンロード テンプレート デスクトップ ドキュメント ビデオ 音楽 画像 公開 [pi]~$ rm id_rsa.pub [pi]~$ ls python_games ダウンロード テンプレート デスクトップ ドキュメント ビデオ 音楽 画像 公開 [pi]~$ ls -la drwxr-xr-x 2 pi pi 4096 8月 5 17:19 .ssh [pi]~$ chmod 700 .ssh [pi]~$ chmod 600 ~/.ssh/authorized_keys [pi]~$ ls -la | grep .ssh drwx------ 2 pi pi 4096 8月 5 17:19 .ssh [pi]~$ ls -la ~/.ssh | grep authorized_keys -rw------- 1 pi pi 401 8月 5 17:19 authorized_keys
sshd_configの設定
- ポート番号の変更(事前に変更している場合は省略)
- rootログインの禁止(初期設定でnoになっている)
- パスワード認証の禁止
- 空のパスワード禁止
- 公開鍵認証の設定
Port XXXXX // 数字を変更 (略) PermitRootLogin no // 「#」外してyes → no (略) PubkeyAuthentication yes // 追記 RSAAuthentication yes // 追記 AuthorizedKeysFile %h/.ssh/authorized_keys // 追記 (略) PasswordAuthentication no // 「#」外してyes → no PermitEmptyPasswords no // 「#」外してyes → no
設定情報を更新する。
[pi]~$ sudo /etc/init.d/ssh restart
sshで接続
[mac]~$ ssh -i .ssh/id_rsa -p [port番号] pi@192.168.0.XXX Enter passphrase for key '~/.ssh/id_rsa': Linux raspberrypi 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BST 2018 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Aug 5 17:32:46 2018 from 192.168.0.YYY [pi]~ $ // 成功
おまけ
毎回同じように打つのがめんどくさいので、configに情報を登録しておくと、便利
[mac]~$ vi .ssh/config ~~~~~~~~~~~~~~~~~~~~~~~~ Host [ホスト名] HostName 192.168.XX.XX User pi Port [ポート番号] IdentityFile ~/.ssh/id_rsa ~~~~~~~~~~~~~~~~~~~~~~~~
これで次回から[ホスト名]のみでアクセスできる。
[mac]~$ ssh [ホスト名]
おまけ②
ラズパイのviがうまく機能しない(上下左右キーがABCDとなる)ので.vimrcを設定したが sshd_configをいじるときだけ同じだったので、 chmodで666に変更してテキストエディタで編集した。
おまけ③
[vagrant@localhost ~]$ ssh pi@192.168.0.XXX ssh: connect to host 192.168.0.XXX port 22: Connection refused
- 公開鍵認証の効果
[vagrant@localhost ~]$ ssh pi@192.168.0.XXX -p [ポート番号] The authenticity of host '[192.168.0.XXX]:~~~~~ ([192.168.0.XXX]:~~~~~)' can't be established. ECDSA key fingerprint is *************************** ECDSA key fingerprint is *************************** Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[192.168.0.XXX]:~~~~~~' (ECDSA) to the list of known hosts. Permission denied (publickey).