Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Ubuntu 26.04 の SSH 設定では、接続元の ssh client 設定と、接続先の sshd server 設定を分けて考えます。特に server 側の設定変更は、構文確認と別セッションでの接続確認を行ってから既存セッションを閉じます。
この記事では、SSH サービス状態、公開鍵配置、client config、server config、sshd 構文確認、reload、ログ確認、firewall 側の確認を扱います。
SSH サービスの状態を確認する
まず SSH server が起動しているか、待ち受けポートが想定どおりかを確認します。Ubuntu では service 名が ssh.service です。
systemctl status ssh.service --no-pager
systemctl is-enabled ssh.service
sudo ss -lntp | grep ':22'
ssh -V現在の sshd 設定を確認する
sshd -T で有効な設定を確認します。ファイルだけを見るより、最終的に sshd が解釈した値を確認できます。
sudo sshd -T | sort
sudo sshd -T | grep -E '^(port|permitrootlogin|passwordauthentication|pubkeyauthentication|authorizedkeysfile)'
sudo sshd -t管理ユーザーの公開鍵を配置する
公開鍵認証を使う場合は、対象ユーザーの authorized_keys に公開鍵を配置し、所有者と権限を確認します。
sudo install -d -o myadmin -g myadmin -m 0700 /home/myadmin/.ssh
sudo tee /home/myadmin/.ssh/authorized_keys >/dev/null <<'EOF'
ssh-ed25519 AAAAexample public-key-comment
EOF
sudo chown myadmin:myadmin /home/myadmin/.ssh/authorized_keys
sudo chmod 0600 /home/myadmin/.ssh/authorized_keys
sudo ls -ld /home/myadmin/.ssh
sudo ls -l /home/myadmin/.ssh/authorized_keysclient config を作成する
接続元では ~/.ssh/config に接続先、ユーザー、鍵、ポートを分けて書きます。複数サーバーを扱う場合、コマンド入力の揺れを減らせます。
install -d -m 0700 ~/.ssh
tee ~/.ssh/config >/dev/null <<'EOF'
Host ubuntu2604-admin
HostName 192.0.2.10
User myadmin
Port 22
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
ServerAliveInterval 30
EOF
chmod 0600 ~/.ssh/config
ssh -G ubuntu2604-admin | grep -E '^(hostname|user|port|identityfile)'server config を drop-in で管理する
Ubuntu 26.04 では /etc/ssh/sshd_config.d に設定を分けられます。直接本体ファイルへ追記するより、管理対象を分けやすくなります。
sudo install -d -o root -g root -m 0755 /etc/ssh/sshd_config.d
sudo tee /etc/ssh/sshd_config.d/10-hardening.conf >/dev/null <<'EOF'
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
X11Forwarding no
EOF
sudo chmod 0644 /etc/ssh/sshd_config.d/10-hardening.conf
sudo sshd -t設定を反映する
構文確認が通ったら reload で反映します。既存セッションを閉じる前に、別端末から新しい SSH 接続を確認します。
sudo systemctl reload ssh.service
systemctl status ssh.service --no-pager
journalctl -u ssh.service -n 50 --no-pager
ssh -v ubuntu2604-admin true接続失敗時のログを確認する
公開鍵、権限、ユーザー、認証方式の問題はログで確認します。client 側は ssh -v、server 側は journal と auth.log を見ます。
ssh -v ubuntu2604-admin true
journalctl -u ssh.service -b --no-pager
sudo tail -n 100 /var/log/auth.logroot ログインとパスワード認証を確認する
無効化したつもりの設定が有効になっていないか確認します。最終値は sshd -T で見ます。
sudo sshd -T | grep -E '^(permitrootlogin|passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication)'
sudo grep -R "PermitRootLogin\|PasswordAuthentication\|KbdInteractiveAuthentication" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/firewall 側を確認する
sshd が待ち受けていても、firewall 側で許可されていなければ外部から接続できません。nftables やクラウド側 firewall も合わせて確認します。
sudo ss -lntp | grep ':22'
sudo nft list ruleset | grep -E 'dport 22|ssh' || true
nc -vz 192.0.2.10 22鍵と設定の権限を確認する
SSH はファイル権限に厳しいため、鍵や config の権限が広すぎると無視されます。
ls -ld ~/.ssh
ls -l ~/.ssh/config ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
sudo namei -l /home/myadmin/.ssh/authorized_keys
sudo ls -l /home/myadmin/.ssh/authorized_keys確認項目
ssh.serviceが active か。sshd -tで構文確認しているか。sshd -Tで有効な最終設定を確認しているか。- 公開鍵と
authorized_keysの権限が正しいか。 - reload 後に別セッションで接続確認しているか。
- firewall で SSH ポートが許可されているか。
- 接続失敗時に client/server 両方のログを見ているか。
まとめ
Ubuntu 26.04 の SSH 設定では、client 側の接続設定と server 側の sshd 設定を分けて管理します。server 側を変更する時は、sshd -t、sshd -T、reload、別セッション接続確認、ログ確認まで行うことで、設定ミスによる閉め出しを避けやすくなります。

