雑談
最近、色々あって家にいないことが多くなりました。
ということで、Raspberry Piを外部から接続したいですね。
はい、やりましょう。そして、今回も備忘録的なものです。
内容
- 自分の鍵ペアができるようにする
- SSHを鍵認証でログインできるようにする
- 外部にSSHポートを開放する
キーファイルの作成
まずローカルでキーファイルを置くディレクトリを作ります。
$ cd ~/.ssh/
$ ssh-keygen -t rsa
(今回自分は.ssh 直下に秘密鍵を置いておいてしまいましたが、ディレクトリ分けしておいて、後々増やす時に、ややこしくないようにするべきだったなぁと)
ま、コピーすればいいか。
これで.ssh
配下に秘密鍵のid_rsaと、公開鍵のid_rsa.pubが作成されます。
そして今作成したキーペアの内、公開鍵のid_rsa.pubを Raspberry Pi に送ります。
$ scp ./id_rsa.pub pi@raspberrypi.local:~
pi@raspberrypi.local
の部分は自分用に変更してやってください。
パスワードを求められたら、入力してください。
これで、作成した公開鍵がRaspberry Piにコピーされました。
Raspberry Pi側のsshの設定
ssh(Password 認証)で Raspberry Pi に接続し、次に ssh の鍵を管理する.sshディレクトリを作成します。
$ ssh pi@Raspberrypi.local
$ mkdir ~/.ssh
$ chmod 700 .ssh
$ cd .ssh
$ cat ../id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ rm -fv ../id_rsa.pub
簡単なコマンドの説明
-
ssh pi@Raspberrypi.local
Raspberry PiにSSH (Secure Shell) を使用して、Raspberry Pi にリモート接続します。 -
mkdir ~/.ssh
ホームディレクトリ (~) に .ssh ディレクトリを作成します。 -
chmod 700 .ssh
.ssh ディレクトリのアクセス権を所有者のみアクセス可能に変更します。 -
cd .ssh
.sshディレクトリに移動- -
cat ../id_rsa.pub >> authorized_keys
../id_rsa.pub ファイル(公開鍵)を読み取り、その内容を .ssh/authorized_keys ファイルに追記します。authorized_keys ファイルに公開鍵を登録することで、その鍵を持つクライアント(あなたの PC)が Raspberry Pi にパスワードなしで SSH 接続できるようになります。
-
chmod 600 authorized_keys
authorized_keys の権限を所有者のみ読み書き可能に制限し、セキュリティを強化します。 -
rm -fv ../id_rsa.pub
id_rsa.pub ファイル(公開鍵)を削除します。
次に/etc/ssh/sshd_config
の中を編集します。
$ sudo nano /etc/ssh/sshd_config
以下の3つの部分を変更または、追記しました。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
HostKeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa
編集ができて保存したら、テストしてみましょう
$ which sshd
$ /usr/sbin/sshd -t
sshd: no hostkeys available -- exiting.
$ sudo /usr/sbin/sshd -t
sudoつけたら行けた。
一応exit
で、再起動しました。
$ sudo ifconfig en0 down
$ sudo route flush
$ sudo ifconfig en0 up
完了したら自分の場合は、cloudflareにレコードを追加したので以下の文で接続できました。
$ ssh ユーザー名@cloudflareに登録したドメイン -p ポート番号
でけた🤩