Raspberry PiにUSBカメラを接続して、motionで 動体検知対応のカメラとして機能させるまでの備忘録
今回は公開鍵認証編
(ターミナルのログは所々Jessieの時のものを使っています…)
環境は
USBカメラとの相性で、OS「Raspbian」はちょっと古いですがStretch版を利用
macOS Monterey 12.1
すべてマックのターミナル.appを使っての操作です。
毎回パスワードを入力するのは疲れるので、公開鍵認証でssh接続できるようにします。
参考ページ
ツール・ラボ » Raspberry Piに公開鍵認証を使ってssh接続する
ここに書かれていることを、そのまま実行すればOKです。
と、これだけじゃ怒られるので簡単な説明を
以前の公開鍵と秘密鍵がある場合はそれを使いますので、新規の作成は必要ありません。所定の位置に移動しておいてください。(ホームの「.ssh」フォルダ内)
Macで公開鍵と秘密鍵を作成する
ターミナルを起動したら(入力するのは「」の中)
「ssh-keygen -t rsa」と入力してリターンキー
Enter file in which to save the key
と聞かれるので、保存場所を確認してリターンキー
Enter passphrase
と聞かれるので、そのまま何も入力しないでリターンキー
Enter same passphrase again: と聞かれるので、そのままリターンキー
公開鍵と秘密鍵が生成されました。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/hogehoge/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/hogehoge/.ssh/id_rsa. Your public key has been saved in /Users/hogehoge/.ssh/id_rsa.pub. The key fingerprint is: SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx The key's randomart image is: +---[RSA 2048]----+ | .+oo=o.. | |..= .+=+o | |=+ o =oo= . | |+oo ...o = o | | ..o . M + Y| | o . . ..| | . + *..| | o. o ..+o| | .+. ...... .+| +----[SHA256]-----+
ファイルを確認してみます。
公開鍵を保存した場所に移動します。(環境によって場所は違います。上記保存場所 has been saved in の後を参照してください)
例では/Users/hogehoge/.sshとします。
「cd /Users/hogehoge/.ssh」と入力してリターンキー
「ls」と入力してリターンキー
ida_rsaとida_rsa.pubの2つのファイルがあればOKです。
公開鍵ファイルをRaspberry Piに転送する
公開鍵を保存した場所に移動します。(環境によって場所は違います。上記保存場所 has been saved in の後を参照してください)
ターミナルで「cd /Users/hogehoge/.ssh」と入力してリターンキー
転送する公開鍵は「id_rsa.pub」の方です。間違わないようにしてください。
id_rsaの方は秘密鍵になります。
転送は
「scp id_rsa.pub pi@Raspberry PiのIPアドレス:パス」という形式になります。
例の場合は192.168.0.123に固定しているので
「scp id_rsa.pub pi@192.168.0.123:/home/pi/」と入力してリターンキー
pi@192.168.0.123’s password:
と聞かれたら、Raspberry Piのパスワードを入力してリターンキー
id_rsa.pub 100% 423 0.4KB/s 00:00
こんな感じなったら転送完了です。
Raspberry Pi側の設定
Macでターミナルを起動したら、
「ssh pi@固定したIPアドレス」
例の場合は
「ssh pi@192.168.0.123」と入力してリターンキー
途中で、
Are you sure you want to continue connecting (yes/no)?
と聞かれたら、
「yes」と入力してリターンキー
pi@192.168.0.123’s password:
と聞かれたら、パスワードを入力してリターンキー
pi@raspberrypi:~ $
となればRaspberry Piへのログイン完了です。
念のため、「cd」と入力してリターンキー
「ls」と入力してリターンキー
転送されたid_rsa.pubがあることを確認してください。
pi@raspberrypi:~ $ ls id_rsa.pub
.sshディレクトリの作成
「mkdir .ssh」と入力してリターンキー
念のため、「ls -a」と入力してリターンキー
.sshがあることを確認してください。
id_rsa.pubの内容を.sshディレクトリ内のauthorized_keysファイルに書き出します。
「cat id_rsa.pub >> .ssh/authorized_keys」と入力してリターンキー
パーミッションを変更します。
「chmod 700 .ssh」と入力してリターンキー
「chmod 600 .ssh/authorized_keys」と入力してリターンキー
id_rsa.pubを削除します。
「rm id_rsa.pub」と入力してリターンキー
sshサーバの設定ファイルを編集
「sudo nano /etc/ssh/sshd_config」と入力してリターンキー
ポート番号の変更
Port 22
を任意のものに変更
Raspberry Pi を公開するためのセキュア設定 | Raspberry Pi用ソケットサーバーフレームワーク「HAL」 | Feijoa.jpによると、49152〜65535の数字が使えそうな感じ
例では、55555にしてみます。
Port 55555
rootログインを禁止。
PermitRootLogin no
公開鍵認証を有効にする
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
パスワード認証を無効にする
PasswordAuthentication no
頭に#がある場合は、削除するのを忘れずに
問題なければ、「controlキー + o」
File Name to Writeと下に表示されたらリターンキー
「controlキー + x」で編集を終了します。
sshサーバを再起動する
「sudo /etc/init.d/ssh restart」と入力してリターンキー
pi@raspberrypi:~ $ sudo /etc/init.d/ssh restart [ ok ] Restarting ssh (via systemctl): ssh.service.
接続できるか確認
Raspberry Piにログインした状態で
一旦「exit」と入力してリターンキーで抜けます。
pi@raspberrypi:~ $ exit
ターミナルで(入力するのは「」の中)
念のため
「cd」と入力してリターンキー
形式は
ssh -i .ssh/id_rsa -p ポート番号 pi@固定したIPアドレス
「ssh -i .ssh/id_rsa -p 55555 pi@192.168.0.123」と入力してリターンキー
$ ssh -i .ssh/id_rsa -p 55555 pi@192.168.0.123 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: 前回ログイン日時 pi@raspberrypi:~ $ exit
となればOK
「exit」と入力してリターンキー
抜けます。
もっと簡単にログインするために
ここからは、Mac側のローカルな環境での作業です。
pi@raspberrypi:~ $となったままの場合は、「exit」と入力してリターンキーで抜けてください。
念のため、「cd」と入力してリターンキー
「sudo nano .ssh/config」と入力してリターンキー
管理者パスワードを要求されたら入力してリターンキー
Host 接続するときの名前
HostName Raspberry PiのIPアドレス
User pi
Port ポート番号
IdentityFile 秘密鍵の場所
で
Host raspi HostName 192.168.0.123 User pi Port 55555 IdentityFile ~/.ssh/id_rsa
を書き込みます。
問題なければ、「controlキー + o」
File Name to Writeと下に表示されたらリターンキー
「controlキー + x」で編集を終了します。
これで、
ターミナルで「ssh raspi」と入力してリターンキーで、Raspberry Piに接続できるようになります。
$ ssh raspi 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: 前回のログイン日時
補足
Raspberry Piの終了について
「sudo shutdown -h now」と入力してリターンキー
緑色のランプが何度か点滅して、赤色のランプのみの点灯になれば、コンセントから抜いて大丈夫です。
コメント