sudo実行でタイムアウトする/遅いときの原因と解決方法

  • URLをコピーしました!

Linuxで sudo を実行した際に、すぐにパスワード入力画面が出ずに長時間待たされる、あるいはタイムアウトしてしまうことがあります。
単純な権限エラーとは異なり「遅い」という挙動を示すため、原因が分かりづらいケースです。

この記事では、sudo 実行時に遅延やタイムアウトが発生する主な原因と、その解決方法について整理します。

目次

主な原因

1. DNS逆引きの遅延

sudo はログ出力時などにユーザーのホスト名を確認するため、IPアドレスの逆引きを試みます。
もしDNSサーバーに問題がある、あるいは逆引きが設定されていない場合、問い合わせがタイムアウトするまで処理が止まってしまいます。

2. /etc/sudoers の設定による遅延

sudoers ファイルにホスト名ベースの制御が記述されていると、認証時に名前解決が走る場合があります。
特に ALL=(ALL) のような一般的な指定ではなく、特定のホスト名で制御している環境では、DNSやhostsの不整合で遅延が発生することがあります。

解決方法

1. DNS逆引きを無効化する

/etc/ssh/sshd_config と同様に、sudo 側でもDNS解決を抑制する設定が可能です。

/etc/sudoersvisudo で開き、以下の行を追加します。

Defaults !fqdn

これにより、ホスト名解決が行われず、認証処理が高速化されます。

2. /etc/hosts に明示的に記載する

逆引きが必要な場合は、サーバーのホスト名とIPアドレスを /etc/hosts に追加しておくと解決できます。

例:

127.0.0.1   localhost
192.168.1.10 myserver

このように設定しておけば、DNSを経由せず即座に名前解決できるため、遅延がなくなります。

3. sudoers のホスト名指定を見直す

もし sudoers に以下のような設定がある場合:

user ALL=(ALL) myserver

これを単純に

user ALL=(ALL) ALL

に変更すれば、ホスト名の名前解決を行わなくなり、処理が軽くなります。

まとめ

sudo 実行時に遅い/タイムアウトする原因は、ほとんどがDNS逆引きの遅延や、ホスト名依存の sudoers 設定にあります。

  • Defaults !fqdn を追加して逆引きを無効化する
  • /etc/hosts にホスト名を登録する
  • sudoers のホスト名指定を削除・修正する

といった対応で多くのケースは解決可能です。

よくあるエラーと解決方法まとめ
目次