SSHの受信ルールを設定する・UFW/firewalld/クラウド

TCPポートと接続元を限定し、OSとクラウドの両方で確認する手順です。

対象SSHをTCP 22で待ち受ける構成。例の203.0.113.10/32は説明用で、実際の接続元IPへ置き換えます。
最初に確認すること

SSHが待ち受けていることを確認してから、使っているファイアウォールのルールを確認します。OSとクラウドで管理する場所が分かれるため、片方だけで完了とは判断しません。

このページの内容
  1. 実際の接続元と待受を確認する
  2. UFWを使用中の場合
  3. firewalldのゾーンを確認する
  4. firewalldで接続元を指定して許可する
  5. 接続確認後にfirewalldのルールを永続化する
  6. クラウド側の受信設定を確認する
  7. 追加したルールを戻す

実際の接続元と待受を確認する

接続元は手元PCのLAN内IPとは限りません。VPNやNATを通る場合、サーバーから見える接続元を許可します。IPv4とIPv6は別に確認してください。

新しい制限を入れる前に、既存の管理接続とクラウドコンソールを確保します。SSHサービスが待ち受けていない場合は、先にOS別ガイドへ戻ります。

UFWを使用中の場合

sudo ufw status verboseでactiveであることと、既存の許可を確認します。UFWがinactiveなら、下の追加だけで有効になるわけではありません。他のnftables・iptables管理やクラウド初期設定を確認し、無条件にufw enableを実行しないでください。

203.0.113.10を実際の管理端末の出口IPv4へ置き換えてから追加します。すでに全接続元を許可するルールがある場合、狭い許可を足すだけでは全体の制限になりません。

接続先・UFWがactiveの場合
sudo ufw status verbose
sudo ufw allow proto tcp from 203.0.113.10 to any port 22
sudo ufw status numbered

firewalldのゾーンを確認する

有効なゾーンは環境ごとに異なります。次のpublicは例なので、実際に通信が入るインターフェース・接続元のゾーンへ置き換えます。runtimeとpermanentの両方を確認してください。

接続先・firewalldが稼働している場合
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --permanent --zone=public --list-all

firewalldで接続元を指定して許可する

まずruntimeへ追加し、その接続元から新規接続できるか試します。この段階では永続化せず、接続成功後に次の節へ進みます。

既存のsshサービス許可、22/tcpの許可、trustedゾーンなどがあれば、狭いルールの追加だけでは接続元を限定できません。広い許可を整理するときも、ほかの管理者が使う経路を確認してから行います。

接続先・ゾーンと接続元を書き換えて実行
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" service name="ssh" accept'

接続確認後にfirewalldのルールを永続化する

同じルールをpermanentへ追加します。public・接続元IPはruntimeに追加したときと同じ値を使います。

接続先・新しいルールで接続できた後
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" service name="ssh" accept'

クラウド側の受信設定を確認する

OCIなら適用されるNSGとセキュリティリスト、ほかのクラウドならセキュリティグループなどを確認します。TCP・宛先ポート22・必要な接続元CIDRを指定します。

複数の許可ルールが重なっている場合、狭いルールを追加しても広い許可が残ります。ルート、公開IP、VPN経路も別の確認項目です。自宅からの直接公開はルーターの転送と回線側の着信条件も関係します。

自宅ルーターと外部接続の確認サブネット・CIDRを計算する

追加したルールを戻す

下はこのページで追加した例を取り消すコマンドです。public・203.0.113.10は追加時と同じ値へ置き換えます。元からあったルールに対して実行しません。制限の見直しで元の許可を消した場合は、それも記録に従って復元します。

接続先・使った方式の行だけ実行
# UFW
sudo ufw delete allow proto tcp from 203.0.113.10 to any port 22

# firewalld
sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="203.0.113.10/32" service name="ssh" accept'
sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="203.0.113.10/32" service name="ssh" accept'

参照した公式資料

資料確認日:2026年9月12日。公式資料と一般的な確認手順をもとに作成しています。すべてのOS・ルーター・ゲームの組み合わせを実機検証したものではありません。