Skip to content

Instantly share code, notes, and snippets.

@TakashiSasaki
Last active October 28, 2024 00:06
Show Gist options
  • Save TakashiSasaki/af9417ad315f1dd9eddfdc40d2dd0039 to your computer and use it in GitHub Desktop.
Save TakashiSasaki/af9417ad315f1dd9eddfdc40d2dd0039 to your computer and use it in GitHub Desktop.
Dropbear's key file management

GL-iNet GL-AXT1800におけるDropbearのauthorized_keysファイルの配置と設定

GL-iNetのルータGL-AXT1800は、軽量なSSHサーバであるDropbearを使用しています。パスワードなしで安全にログインできる公開鍵認証をサポートしています。この記事では、公開鍵認証を有効にするための具体的な手順と、authorized_keysファイルの配置について説明します。

1. authorized_keysファイルの役割

SSHで公開鍵認証を使用する場合、クライアント側で生成された公開鍵をサーバに配置し、クライアントの認証に使用します。GL-AXT1800のDropbearでは、公開鍵を**/etc/dropbear/authorized_keys**に配置します。

2. GL-AXT1800におけるauthorized_keysの場所

以下は、GL-AXT1800でのauthorized_keysファイルの例です。実際の鍵部分とPC名はマスクしています。

root@GL-AXT1800:/etc/dropbear# cat authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx user@XXXXX

3. 公開鍵の生成と配置

  1. 公開鍵の生成:
    クライアント側でSSH鍵を生成するには、ssh-keygenコマンドを使用します。このコマンドは、OpenSSHクライアントの一部です。

    ssh-keygen -t ed25519

    このコマンドで生成された公開鍵(例: ~/.ssh/id_ed25519.pub)を次のステップで使用します。

  2. 公開鍵の配置:

    • 手動で配置: 公開鍵を手動でGL-AXT1800にコピーし、/etc/dropbear/authorized_keysに追加します。

      cat ~/.ssh/id_ed25519.pub | ssh root@<router_ip> 'cat >> /etc/dropbear/authorized_keys'
    • ssh-copy-idコマンドを使用: ssh-copy-idを使用して公開鍵を簡単に転送することもできます。

      ssh-copy-id -i ~/.ssh/id_ed25519.pub root@<router_ip>
  3. パーミッションの設定: セキュリティを強化するため、次のコマンドでパーミッションを設定します。

    chmod 600 /etc/dropbear/authorized_keys
    chmod 700 /etc/dropbear

4. uciコマンドによる設定変更

GL-AXT1800には、/sbin/uciコマンドがインストールされています。uci(Unified Configuration Interface)は、OpenWrtやその派生システムで使用される設定管理ツールで、簡単に設定変更が可能です。次のコマンドで、パスワード認証を無効にして公開鍵認証のみを有効にできます。

uci set dropbear.@dropbear[0].PasswordAuth=off
uci commit dropbear
service dropbear restart

5. 設定の確認

設定が完了したら、クライアント側で以下のコマンドを使用し、パスワードなしでGL-AXT1800にログインできることを確認します。

ssh -i ~/.ssh/id_ed25519 root@<router_ip>

6. まとめ

GL-iNet GL-AXT1800でDropbearを使用して公開鍵認証を設定する際、公開鍵を**/etc/dropbear/authorized_keys**に配置する必要があります。手動で公開鍵をコピーするか、ssh-copy-idコマンドを使用する方法があります。uciコマンドを使ってパスワード認証を無効にし、セキュリティをさらに強化することも可能です。これにより、安全かつ効率的なSSHアクセスが実現します。

Dropbear SSHにおける鍵ファイル管理とdropbearkeyコマンドの使用

Dropbearは、組み込みシステムやリソースが限られた環境で動作する軽量なSSHサーバとして広く使用されています。OpenSSHよりも小型であり、特にIoTデバイスやルータなどのリソースが限られたデバイスで利用されています。この記事では、Dropbearの鍵生成ツールであるdropbearkeyの使い方と、鍵ファイルの管理について詳しく解説します。

鍵認証の重要性

SSH通信において、公開鍵認証はパスワード認証よりも高いセキュリティを提供します。公開鍵と秘密鍵のペアを使うことで、クライアントとサーバ間の安全な認証が可能になります。Dropbearでも公開鍵認証がサポートされており、軽量な環境でも効率的に運用できます。

1. 鍵の生成 (dropbearkeyコマンド)

dropbearkeyは、SSH接続に必要な秘密鍵を生成するツールです。OpenSSHのssh-keygenとは異なり、鍵ファイルの場所を -f オプションで明示的に指定する必要があります。これは、デフォルトで保存先が決まっているOpenSSHとは異なる動作です。

dropbearkeyコマンドのヘルプメッセージ

dropbearkeyコマンドのヘルプメッセージは次のように表示されます。

Usage: dropbearkey -t <type> -f <filename> [-s bits]
-t type        Type of key to generate. One of:
                   rsa
                   ed25519
-f filename    Use filename for the secret key.
               ~/.ssh/id_dropbear is recommended for client keys.
-s bits        Key size in bits, should be a multiple of 8 (optional)
               Ed25519 has a fixed size of 256 bits
-y             Just print the publickey and fingerprint for the
               private key in <filename>.

2. 対応している鍵形式

dropbearkeyコマンドは、以下の鍵形式に対応しています。

  • RSA: 汎用的な鍵アルゴリズム。ビット数を指定可能で、2048ビットや4096ビットが一般的に使用されます。
  • Ed25519: 近年、よりセキュアで高速な認証方式として注目されています。Ed25519は256ビット固定の鍵を使用し、RSAよりも高いセキュリティを提供します。

RSA鍵の生成

以下のコマンドで、2048ビットのRSA鍵を生成します。

dropbearkey -t rsa -f ~/.ssh/id_dropbear

このコマンドにより、~/.ssh/id_dropbearにRSA形式の秘密鍵が保存されます。鍵生成が完了すると、公開鍵部分がコンソールに表示されます。

Ed25519鍵の生成

Ed25519形式の鍵を生成するには、次のコマンドを実行します。

dropbearkey -t ed25519 -f ~/.ssh/id_dropbear_ed25519

Ed25519鍵も、指定したパスに秘密鍵が保存されます。Ed25519は固定の256ビットサイズで、特に軽量デバイスでのパフォーマンスに優れています。

3. 秘密鍵ファイルの形式と互換性

dropbearkeyで生成される鍵ファイルは、秘密鍵のバイナリファイルです。この形式は、OpenSSHのssh-keygenで生成されるPEM形式のテキストファイルとは異なり、互換性がありません。DropbearとOpenSSH間で秘密鍵を直接共有することはできませんが、公開鍵部分は互換性があるため、異なるサーバ間での認証には問題なく使用できます。

  • Dropbearの秘密鍵: バイナリ形式(例: id_dropbear
  • OpenSSHの秘密鍵: テキストベースのPEM形式(例: id_rsa

4. 公開鍵の取得

dropbearkeyで生成された秘密鍵ファイルから公開鍵を取得するには、次のコマンドを使用します。

dropbearkey -y -f ~/.ssh/id_dropbear

このコマンドを実行すると、公開鍵部分が表示されます。この公開鍵をサーバの~/.ssh/authorized_keysファイルに追加することで、鍵認証によるSSHログインが可能になります。

5. 鍵ファイルの管理とパーミッション

生成された秘密鍵ファイルは、適切に管理されなければなりません。秘密鍵ファイルは機密性が高いため、適切なパーミッションを設定し、他のユーザーからのアクセスを制限する必要があります。

以下のコマンドで秘密鍵ファイルのパーミッションを設定します。

chmod 600 ~/.ssh/id_dropbear
chmod 700 ~/.ssh

また、公開鍵を保存するauthorized_keysファイルにも適切なパーミッションを設定します。

chmod 600 ~/.ssh/authorized_keys

6. Dropbear鍵ファイルの実際の使用

Dropbearの鍵ファイルを使用してSSH認証を行う際には、公開鍵を正しい場所に配置することが必要です。クライアント側では秘密鍵を使用してサーバにアクセスし、サーバ側では公開鍵が正しく認識されることで鍵認証が成功します。

公開鍵認証を使用することで、パスワードを使用せずに安全なSSHログインが可能になります。また、Dropbearの軽量な特性により、リソースの限られた環境でも快適に運用できます。

まとめ

Dropbearのdropbearkeyコマンドは、SSH認証のために軽量かつ効率的な鍵を生成するツールです。ただし、鍵ファイルの場所を -f オプションで明示的に指定する必要がある点と、生成される秘密鍵ファイルはバイナリ形式であり、OpenSSHのssh-keygenで生成される鍵とは互換性がないことに注意が必要です。

しかし、公開鍵部分は互換性があるため、OpenSSHとDropbear間で公開鍵認証を利用することは容易です。適切に鍵ファイルを管理し、公開鍵認証を活用することで、安全で効率的なSSH環境を構築できます。

Dropbearの軽量さを活かし、セキュリティを強化したSSH環境をぜひ構築してください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment