SSH の強化:鍵、ポート、制限
sshd の設定方法:鍵のみのログイン、ユーザーとアドレスの制限、ポートの変更、その過程でアクセスを失わない方法について説明します。
更新日 2026年8月23日
SSHは、毎日使うマシンへの唯一の入口であり、自動化されたブルートフォース攻撃の主な標的でもあります。一度設定してしまえば、その後はほとんど手をかける必要はありません。
すべての編集は別ファイル /etc/ssh/sshd_config.d/99-hardening.conf で行ってください。そうすれば、パッケージ更新で設定が上書きされ、アクセスできなくなる事態を避けられます。
パスワードの代わりに鍵を使う
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
PermitEmptyPasswords no
適用する前に、鍵が実際に機能することを確認してください。別のウィンドウでその鍵を使ってログインします。/hosting/vds/m/<id> パネルの「アクセス」タブで追加した鍵はrootユーザーに割り当てられます。それ以外のユーザーについては、~/.ssh/authorized_keys に手動で記述する必要があります。
手元で鍵を生成する場合:
ssh-keygen -t ed25519 -C "work laptop"
ed25519 はRSAより短く、高速です。使用中のツールが対応していない場合は、長さ4096ビット以上の rsa を使用してください。
ログインを許可するユーザー
PermitRootLogin prohibit-password
AllowUsers artem deploy
MaxAuthTries 3
LoginGraceTime 20
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers は、パスワード認証を無効化した後に最も効果を発揮するルールです。他人のユーザー名に対するブルートフォースは即座に止まります。rootについては、rootログインをパスワードで無効化するを参照してください。
固定された場所から作業する場合のアドレス制限:
Match Address 203.0.113.5
PermitRootLogin yes
ポートの変更
SSHを22番から非標準のポートに移しても、標的型攻撃からは守られませんが、ログに記録される自動スキャナによるノイズのほとんどを排除できます。
Port 2222
手順の順序は厳密に次のとおりです:
ufw allow 2222/tcp
sshd -t
systemctl restart ssh
ssh -p 2222 artem@<address>
ufw delete allow 22/tcp
ファイアウォールルールを再起動の前に設定し、古いルールの削除は新しいポートでログインに成功した後にのみ行います。ポートも参照してください。
適用と確認
sshd -t
sshd -T | grep -Ei "passwordauth|permitroot|allowusers|port"
systemctl restart ssh
sshd -t は構文をチェックし、sshd -T は最終的な有効設定を表示します。表示されるのは、ファイルに書いた内容ではなく、実際に適用される設定です。
設定中は現在のセッションを開いたままにしてください。sshdの再起動後もセッションは維持され、それを通じて失敗した編集を元に戻せます。もしロックアウトされてしまった場合は、パネルの「コンソール」タブがSSHとは独立して機能します。
よくある間違い
| 間違い | 結果 | 対処 |
|---|---|---|
| 鍵をテストせずにパスワード認証を無効化 | ネットワークアクセスを完全に喪失 | パネルのコンソールからログインし、設定を復元 |
sshd_config.d の行の上にメインファイルで編集 | 設定が反映されない | sshd -T で確認 |
| ufwルールなしでポートを変更 | アクセスを喪失 | 先にルール、その後ポート |
~/.ssh のパーミッションが700より広い | 鍵が黙って無視される | chmod 700 ~/.ssh、chmod 600 authorized_keys |
自分のユーザー名を含めずに AllowUsers を設定 | 自分自身をロックアウト | パネルのコンソールでファイルを編集 |
sshd_configでは、パラメータの最初の記述が優先され、sshd_config.dのファイルは先頭で読み込まれます。そのため、ファイルを読むのではなくsshd -Tで結果を確認してください。
残りのブルートフォースのノイズは fail2ban が取り除きます。