手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 SSH 鍵認証の設定

Ubuntu 26.04 認証・管理の関連記事

Ubuntu 26.04 でサーバーを管理する場合、SSH 鍵認証は基本になります。パスワードだけに頼る構成より、公開鍵を明示的に配置し、sshd 側で鍵認証を有効にする方が管理しやすくなります。

実環境では構成管理で公開鍵と sshd_config を管理していますが、この記事では手動で行う場合の流れとして、公開鍵配置、権限確認、sshd設定、構文確認、接続確認を整理します。

この記事で整理すること
  • 管理ユーザーの authorized_keys に公開鍵を配置する
  • .sshauthorized_keys の権限を確認する
  • sshd_config.d に鍵認証の設定を追加する
  • sshd -t で検証してから SSH を reload / restart する
  • 現在の接続を閉じる前に、別セッションで鍵認証を確認する
対象 OSUbuntu 26.04
対象サービスssh.service
公開鍵配置先~/.ssh/authorized_keys
sshd 追加設定/etc/ssh/sshd_config.d/99-local.conf
構文確認sudo sshd -t
  1. 1
    現在の SSH 状態を確認する
    サービス状態、待ち受け、既存設定を確認します。
  2. 2
    公開鍵を配置する
    管理ユーザーの authorized_keys に公開鍵を追加します。
  3. 3
    権限を整える
    .ssh は 700、authorized_keys は 600 を基本にします。
  4. 4
    sshd 設定を追加する
    鍵認証を有効にし、必要に応じてパスワード認証を制限します。
  5. 5
    別セッションで確認する
    現在の SSH セッションを閉じる前に、鍵認証でログインできることを確認します。
参考
書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server のSSH、認証、運用管理を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

現在の SSH 状態を確認する

まず SSH サービスの状態、待ち受け、現在有効な設定を確認します。

コマンド
systemctl status ssh.service --no-pager
ss -ltnp | grep ':22' || true
sudo sshd -T | grep -Ei 'pubkeyauthentication|passwordauthentication|permitrootlogin|kbdinteractiveauthentication'

sshd -T は、最終的に有効になる sshd 設定を確認するのに便利です。設定ファイルに書いた値だけでなく、include や既定値を含めた結果として見ます。

公開鍵を配置する

管理ユーザーのホームディレクトリに .ssh を作成し、公開鍵を authorized_keys に配置します。次の例では、公開鍵文字列を置き換えて使います。

コマンド
mkdir -p ~/.ssh
chmod 700 ~/.ssh

cat >> ~/.ssh/authorized_keys <<'EOF'
ssh-ed25519 AAAA_REPLACE_WITH_YOUR_PUBLIC_KEY comment
EOF

chmod 600 ~/.ssh/authorized_keys
秘密鍵ではなく公開鍵を置きます。authorized_keys に秘密鍵を貼り付けてはいけません。公開鍵は通常 ssh-ed25519 ...ssh-rsa ... のような1行です。

権限と所有者を確認する

SSH 鍵認証では、ホームディレクトリ、.sshauthorized_keys の権限が不適切だと認証に失敗することがあります。

コマンド
ls -ld ~ ~/.ssh
ls -l ~/.ssh/authorized_keys
tail -n 5 ~/.ssh/authorized_keys

サーバー側で別ユーザーの鍵を配置する場合は、対象ユーザーとして所有者と権限を確認します。

コマンド
sudo install -d -m 700 -o adminuser -g adminuser /home/adminuser/.ssh
sudo install -m 600 -o adminuser -g adminuser /tmp/authorized_keys /home/adminuser/.ssh/authorized_keys

sshd の鍵認証設定を追加する

Ubuntu では /etc/ssh/sshd_config.d/ 配下に追加設定を置く構成が扱いやすいです。次は鍵認証を有効にし、rootログインとパスワード認証を制限する例です。

設定ファイル例
sudo install -d -m 755 -o root -g root /etc/ssh/sshd_config.d

sudo tee /etc/ssh/sshd_config.d/99-local.conf >/dev/null <<'EOF'
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding no
LogLevel VERBOSE
EOF
パスワード認証を無効化する前に、必ず鍵認証でログインできることを別セッションで確認します。遠隔サーバーでいきなり無効化すると、締め出される可能性があります。

設定を検証して反映する

設定を反映する前に、sshd -t で構文を確認します。問題がなければ SSH サービスを reload または restart します。

コマンド
sudo sshd -t
sshd -t が成功したことを確認してから反映します。現在のセッションは閉じず、別ウィンドウで接続確認します。
コマンド
sudo systemctl reload ssh.service
systemctl status ssh.service --no-pager

鍵認証で接続確認する

クライアント側から、秘密鍵を指定して接続します。初回は -v を付けると、どの鍵を試しているか確認しやすくなります。

コマンド
ssh -i ~/.ssh/id_ed25519 adminuser@server.example.com
ssh -v -i ~/.ssh/id_ed25519 adminuser@server.example.com

接続確認が成功するまで、既存の SSH セッションを閉じないようにします。

ログで失敗理由を確認する

鍵認証が失敗する場合は、サーバー側のログを確認します。公開鍵の形式、権限、ユーザー名、sshd_config の設定が原因になることが多いです。

コマンド
journalctl -u ssh.service --since today --no-pager
sudo sshd -T | grep -Ei 'pubkeyauthentication|passwordauthentication|authorizedkeysfile'
  • 公開鍵ではなく秘密鍵を貼っていないか
  • authorized_keys の所有者と権限が正しいか
  • 接続ユーザー名が正しいか
  • クライアント側が期待した秘密鍵を使っているか
  • sshd 側で PubkeyAuthentication yes になっているか

まとめ

Ubuntu 26.04 の SSH 鍵認証では、公開鍵の配置、権限、sshd設定、構文確認、接続確認を分けて確認します。特にパスワード認証を無効化する場合は、鍵認証で接続できることを別セッションで確認してから進めます。

実運用では、公開鍵の配布、sshd設定、ログ確認、鍵の失効や入れ替えを一連の運用として管理すると、安全に扱いやすくなります。

Ubuntu 26.04 認証・管理の関連記事
Ubuntu 26.04 SSH 鍵認証の設定

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る