Ubuntu 26.04 でサーバーを管理する場合、SSH 鍵認証は基本になります。パスワードだけに頼る構成より、公開鍵を明示的に配置し、sshd 側で鍵認証を有効にする方が管理しやすくなります。
実環境では構成管理で公開鍵と sshd_config を管理していますが、この記事では手動で行う場合の流れとして、公開鍵配置、権限確認、sshd設定、構文確認、接続確認を整理します。
- 管理ユーザーの
authorized_keysに公開鍵を配置する .sshとauthorized_keysの権限を確認するsshd_config.dに鍵認証の設定を追加するsshd -tで検証してから SSH を reload / restart する- 現在の接続を閉じる前に、別セッションで鍵認証を確認する
| 対象 OS | Ubuntu 26.04 |
|---|---|
| 対象サービス | ssh.service |
| 公開鍵配置先 | ~/.ssh/authorized_keys |
| sshd 追加設定 | /etc/ssh/sshd_config.d/99-local.conf |
| 構文確認 | sudo sshd -t |
-
1
現在の SSH 状態を確認するサービス状態、待ち受け、既存設定を確認します。
-
2
公開鍵を配置する管理ユーザーの
authorized_keysに公開鍵を追加します。 -
3
権限を整える
.sshは 700、authorized_keysは 600 を基本にします。 -
4
sshd 設定を追加する鍵認証を有効にし、必要に応じてパスワード認証を制限します。
-
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_keysauthorized_keys に秘密鍵を貼り付けてはいけません。公開鍵は通常 ssh-ed25519 ... や ssh-rsa ... のような1行です。権限と所有者を確認する
SSH 鍵認証では、ホームディレクトリ、.ssh、authorized_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_keyssshd の鍵認証設定を追加する
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 -tsshd -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設定、ログ確認、鍵の失効や入れ替えを一連の運用として管理すると、安全に扱いやすくなります。

