
LinuxサーバーをSSHログイン用に公開すると、誰かがサーバーに侵入して不正行為を行う可能性が常に存在します。これを防ぐ方法の一つは、サーバーで2要素認証を有効にすることです。有効にすると、適切に生成された2要素認証コード(と通常の認証情報)を持つユーザーのみがアクセスできるようになります。UbuntuサーバーでSSH 2要素認証を設定する方法を学びましょう。
参照: 知っておくべきオープンソースと Linux の用語 40 選 (TechRepublic Premium)
必要なもの
- Ubuntu Server 22.04 の実行中のインスタンス。
- sudo 権限を持つユーザー。
必要なソフトウェアのインストール方法
まず最初に、Google Authenticatorというパッケージをインストールします。これは、サーバーに2FA認証を追加できるコマンドラインツールです。
Ubuntu インスタンスにログインし、次のコマンドを発行します。
sudo apt-get install libpam-google-authenticator -y
次に、秘密鍵を作成するためのコマンドを実行する必要があります。そのコマンドは以下のとおりです。
google-authenticator
認証トークンを時間ベースにするかどうかを尋ねられます。希望する場合は、y
キーボードで入力してEnterキーを押します。すると、2FAアプリケーションでスキャンできるQRコードが表示されます。
ただし、一つ注意点があります。問題の物理マシンのターミナルに直接ログインしている場合、コード全体を表示できない可能性があります。SSH経由でログインしてターミナルのサイズを変更し、QRコード全体を表示するのが最善策です(図A)。
図A

2FAアプリ(Authyなど)でQRコードをスキャンするか、コードが長すぎてアプリがスキャンできない場合は秘密キーを入力してEnterキーを押します。すると、アカウントを確認するためにアプリからコードを入力するよう求められます。確認後、2FAの緊急コードが表示されます。これらのコードをコピーしてパスワードマネージャーなどの安全な場所に保存し、y
~/.google_authenticatorファイルを更新するように求められたら入力してください。次に、同じ認証トークンの複数回使用を禁止するように求められます。y
中間者攻撃を防ぐのに役立つため、これに同意して入力してください。プロンプトが表示されたら、y
最後の質問に入力して、認証サーバーとクライアント間の最大30秒のタイムスキューを許可してください。
また、プロンプトが表示されたら「y」と入力してレート制限を有効にする必要があります。これにより、攻撃者によるログイン試行が 30 秒ごとに 3 回までに制限されます。
2FA用のSSHデーモンの設定方法
2FAのインストールと設定が完了したら、SSHデーモンも2FAを利用できるように設定する必要があります。以下のコマンドでSSHデーモンの設定ファイルを開きます。
sudo nano /etc/ssh/sshd_config
まず、次の行を見つけて、それが yes に設定されていることを確認します。
UsePAM yes
次に、次の行を見つけて、no を yes に変更します。
KbdInteractiveAuthentication no
ファイルを保存して閉じます。
注: Ubuntu 22.04 より前のリリースでは、上記の行は次のようになります。
ChallengeResponseAuthentication yes
次に、次のコマンドで PAM 構成ファイルを開きます。
sudo nano /etc/pam.d/sshd
@include common-auth 行の下に、次の行を追加します。
auth required pam_google_authenticator.so
ファイルを保存して閉じます。
次のコマンドで SSH デーモンを再起動します。
sudo systemctl restart sshd
次に、新しいターミナルウィンドウを開き、リモートマシンへのログインを試みます。最初にユーザーパスワードの入力を求められ、次に2FAコードの入力を求められます。2FAコードを正しく入力すると、サーバーへのアクセスが許可されます。
SSHキー認証で2FAを有効にする方法
SSHキー認証を使用する場合(そして使用すべきです)、追加の手順が必要です。サーバー上で、SSHデーモンの設定ファイルを以下のコマンドで開きます。
sudo nano /etc/ssh/sshd_config
そのファイルの下部に次の行を追加します。
AuthenticationMethods publickey,keyboard-interactive
ファイルを保存して閉じます。
次のコマンドで SSH を再起動します。
sudo systemctl restart sshd
SSH キー認証が機能することを確認したら、次のコマンドで SSH 構成を開いてパスワード認証を無効にすることができます。
sudo nano /etc/ssh/sshd_config
次の行を見つけます。
PasswordAuthentication yes
次のように変更します。
PasswordAuthentication no
次のコマンドで SSH を再起動します。
sudo systemctl restart sshd
おめでとうございます。Ubuntu Server 22.04 で、より安全な SSH ログインプロセスの設定が完了しました。この設定を行う際は、必ず別のターミナルウィンドウからテストを実行してください。そうすれば、何か問題が発生した場合でも元のターミナルにログインしたままにできます(設定をリセットすることも可能です)。この新たなセキュリティレイヤーをお楽しみください。
TechRepublic Academy の The Mastering Linux Development Bundle で Ubuntu について詳しく学びましょう。
Jack Wallen によるビジネス プロフェッショナル向けの最新のテクノロジー アドバイスをすべて知るには、YouTube で TechRepublic の How To Make Tech Work を購読してください。