Ubuntu 26.04 の SSH 設定は、サーバー側の sshd 設定と、管理端末側の SSH client 設定を分けて考えると整理しやすくなります。鍵認証そのものは別記事で扱い、この記事では client/server の設定全体をまとめます。
実環境では構成管理で ~/.ssh/config と /etc/ssh/sshd_config.d/ を管理していますが、ここでは手動で確認・設定・検証する場合の流れとして整理します。
- サーバー側の
sshd_config.dと有効設定を確認する - sshd の基本設定例を確認する
- 管理ネットワークだけパスワード認証を許可する例を整理する
- クライアント側の
~/.ssh/configを作成・検証する - 設定変更後は
sshd -tと別セッション確認を行う
| 対象 OS | Ubuntu 26.04 |
|---|---|
| サーバー側設定 | /etc/ssh/sshd_config / /etc/ssh/sshd_config.d/*.conf |
| クライアント側設定 | ~/.ssh/config |
| サーバー側検証 | sudo sshd -t / sudo sshd -T |
| クライアント側検証 | ssh -F ~/.ssh/config -G host |
-
1
サーバー側の現在設定を確認するdrop-in と最終的に有効な sshd 設定を確認します。
-
2
sshd 設定を追加する
/etc/ssh/sshd_config.d/99-local.confにローカル方針を書きます。 -
3
sshd 設定を検証して反映する
sshd -tで確認してから reload / restart します。 -
4
クライアント設定を作る
~/.ssh/configに接続先、ユーザー、鍵をまとめます。 -
5
別セッションで接続確認する現在の SSH セッションを閉じる前に、新しい接続で確認します。
書籍
Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server のSSH、認証、運用管理を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
サーバー側設定の場所
Ubuntu では /etc/ssh/sshd_config 本体だけでなく、/etc/ssh/sshd_config.d/ 配下の drop-in で設定を分けられます。ローカル運用方針は drop-in に分けると管理しやすくなります。
sudo ls -l /etc/ssh/sshd_config /etc/ssh/sshd_config.d
sudo sshd -T | grep -Ei 'permitrootlogin|pubkeyauthentication|passwordauthentication|kbdinteractiveauthentication|x11forwarding|allowtcpforwarding|loglevel'sshd -T は、最終的に有効になる設定を確認するためのコマンドです。ファイルに書かれている値だけではなく、include や既定値を含めた結果として確認できます。sshd の基本設定例
次は、鍵認証を基本にし、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
AllowAgentForwarding no
AllowTcpForwarding yes
PermitTTY yes
LoginGraceTime 30s
MaxAuthTries 3
MaxSessions 10
ClientAliveInterval 300
ClientAliveCountMax 2
LogLevel VERBOSE
PrintMotd no
AcceptEnv LANG LC_*
EOF一部ネットワークだけパスワード認証を許可する例
通常は鍵認証を基本にしつつ、管理ネットワークから特定ユーザーだけパスワード認証を許可する設計もあります。これは救済経路として使えますが、許可範囲を広げすぎないことが重要です。
Match Address 192.0.2.0/24 User adminuser
PasswordAuthentication yes
Match Address 2001:db8:100::/64 User adminuser
PasswordAuthentication yes公開インターネット全体に対してパスワード認証を許可するのではなく、管理ネットワークや踏み台など、前提を明確にして制限します。
設定を検証して反映する
sshd 設定を変更したら、構文確認をしてから反映します。
sudo sshd -tsshd -t が成功したことを確認してから反映します。遠隔作業では、現在のセッションを閉じずに別セッションで確認します。sudo systemctl reload ssh.service
systemctl status ssh.service --no-pager
sudo sshd -T | grep -Ei 'permitrootlogin|pubkeyauthentication|passwordauthentication'クライアント側の設定例
管理端末側では ~/.ssh/config に接続先、ユーザー、鍵をまとめておくと運用しやすくなります。Ansible側でもこのファイルを検証して配置する設計にしています。
mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat > ~/.ssh/config <<'EOF'
Host ubuntu26-web01
HostName 192.0.2.10
User adminuser
IdentityFile ~/.ssh/id_ed25519_ubuntu26
IdentitiesOnly yes
ServerAliveInterval 60
ServerAliveCountMax 3
EOF
chmod 600 ~/.ssh/configクライアント設定を確認する
ssh -G を使うと、SSH client が最終的にどの設定を使うか確認できます。
ssh -F ~/.ssh/config -G ubuntu26-web01 | sed -n '1,120p'
ssh ubuntu26-web01
ssh -v ubuntu26-web01-v を付けると、どの鍵を試しているか、どの認証方式で進んでいるかが分かります。接続できない場合の切り分けに便利です。
確認観点
SSH の問題は、クライアント側、ネットワーク、サーバー側設定、認証情報のどこでも起きます。順番に切り分けると原因を追いやすくなります。
- 名前解決やIP到達性に問題がないか
- TCP 22 番へ到達できるか
- クライアントが期待した秘密鍵を使っているか
- サーバー側に公開鍵が正しく配置されているか
- sshd の最終設定が意図通りか
- ログに拒否理由が出ていないか
ssh -v ubuntu26-web01
journalctl -u ssh.service --since today --no-pagerまとめ
Ubuntu 26.04 の SSH 設定は、サーバー側の sshd_config.d と、クライアント側の ~/.ssh/config を分けて管理すると整理しやすくなります。
設定変更時は sshd -t で検証し、既存の SSH 接続を残したまま別セッションで接続確認します。鍵認証、sshd の制限、client config をセットで管理することが安定運用につながります。



