Raspberry PiのUbuntu MATEでSSH接続のセットアップ(GitHubから鍵登録)


最近、Raspberry Pi4を買いました。
せっかくなのでRaspberry Pi OS(旧Raspbian)ではなく、正式サポートされているUbuntu Desktop環境のUbuntu MATEをインストールしてみたところ、意外とハマったのでメモです。SSHでつなぐところまでやります。

インストール方法

ここからイメージをダウンロードして、MicroSDに書き込みます。
Choose an architecture | Download
イメージ書き込みはこのアプリがおすすめです。
balenaEtcher - Flash OS images to SD cards & USB drives
あとは起動するだけですね。

SSH接続のセットアップ

デスクトップ環境といっても、手元のPCからアクセスしたいこともありますよね。
ということで、SSHをつなぎます。

OpenSSHをインストール

なんと、Ubuntu MATEにはOpenSSHがインストールされていませんでした。(公式サイトにもちゃんと書いてある

The OpenSSH server is not installed by default. Simply install it to to enable SSH.

記載の通りに下記コマンドでOpenSSH-Serverをインストールします。

sudo apt install openssh-server

有効化

インストールだけでは動きません。OpenSSHを有効化します。

sudo systemctl enable ssh
sudo systemctl start ssh

SSHキー生成

Raspberry PiのSSHキーを生成します。
Ubuntuでは下記でOpenSSHが再設定され、鍵の生成も自動で行われます。

sudo dpkg-reconfigure openssh-server

以上で、ユーザーのパスワード認証によるログインが可能になりました。
セキュリティと利便性追求のため、公開鍵での接続設定を行いましょう。

クライアント公開鍵の登録方法

接続元となるクライアントの公開鍵を登録します。

公開鍵ファイルの転送は結構めんどくさいですが、実はGitHubに公開鍵を登録していれば、非常に簡単に転送可能です。なお、公開鍵の登録はこのページから可能です。

ですがその前に…なんとUbuntu MATEにはcurlが入っていないようです。(これは意外でした)
ということで、まずはcurlのインストールからです。

curlのインストール

sudo apt install curl

これでファイルのダウンロードなど、いろいろな通信が手軽に実行可能になりました。

公開鍵のダウンロードと登録

では、気を取り直して。
実はGitHubでは、下記URLから登録済みのユーザーの公開鍵を取得することが可能です。
https://github.com/<ユーザー名>.keys

ここからクライアントの公開鍵を取得して、~/.ssh/authorized_keysに追加すれば、サクッと鍵の登録が完了します。

下記でフォルダ作成とダウンロード、追加が完了です。わざわざSCPする必要もなく、とても簡単ですね。

mkdir -p .ssh && curl https://github.com/kiri-i.keys >> ~/.ssh/authorized_keys

ちなみに、Linuxはファイル名の大文字・小文字を区別するので要注意です。ハマりました。
以上でパスワード入力なしに、クライアントからSSH接続が可能になったかと思います。

ssh <ユーザー名>@<ホスト名>

接続が確認できたら、セキュリティ向上のためパスワード接続をブロックしましょう。

SSHのパスワード認証接続を拒否

SSHの設定ファイルを開き、

sudo vi /etc/ssh/sshd_config

#PasswordAuthentication#PasswordAuthentication yesから#PasswordAuthentication noへ書き換えます。

再起動すれば、設定が反映されるはずです。
お疲れさまでした!