2008年5月1日木曜日

sshd[2001]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.

又、子供にサーバの電源を落された。で、そこ時に気付いたのだが、/var/log/secureに

sshd[2001]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.

とエラーが記録されている。過去のログを調べてみると、どうも3月末くらいから、実はリブートのたびに発生していたようだ。

ちょっと調べてみるとSea-Bird.orgさんのOpenSSL/ OpenSSH(SSH1) の設定に関するメモによると、
使用するボートが既に使用されていた場合

使用するポートが既に使用されていた場合、以下のエラーメッセージが表示されます。
error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
fatal: Cannot bind any address.

この対処として、使用済みのポートに対するプロセスを停止することにより解決しますが、該当のポートを誰が使用しているか判らないときは、下記のコマンドを実行することにより調べることができます。
# fuser -n tcp 22
22/tcp: 798
# ps -ef | grep 798
12:root 798 1 0 May21 ? 00:00:00 inetd

上記の場合、"inetd"ですので、inetd.conf を覗いて・・・。なんてことをして再起動すれば問題は解決です。

のくす牧場さんOpenSSHによると
May 1 21:22:06 localhost sshd[2303]: Server listening on :: port 22.
May 1 21:22:06 localhost sshd[2303]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
というエラーがある時は、ipv6のポートをListenしようとしているのかも。
/etc/ssh/sshd_configに
ListenAddress 0.0.0.0
を加えてみよう。Fedora/Redhatだと、コメントアウトを解除する。

教えてgooにもこんなQAがあった。
Q*secureに以下のようなログが出力されてますが、
内容と原因が分かりません。

--------------------------------------------------
May 12 10:29:41 as30 sshd[2710]: Server listening on :: port 22.
May 12 10:29:41 as30 sshd[2710]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
--------------------------------------------------

気になりますので、よろしくお願いします。

A:こんばんは。

>Server listening on :: port 22.
>error: Bind to port 22 on 0.0.0.0 failed: Address already in use.

上の2行をみると、IPv6用(::)を先につかんでいる(Bind)様に見えます。

というわけで、#2を正確に再回答すると、

もし、sshd_configファイルで

# ListenAddress 0.0.0.0 (IPv4用)
# ListenAddress ::    (IPv6用)

と、両方コメントになっていたら、IPv4用だけを有効にしてみてください。

ListenAddress 0.0.0.0
# ListenAddress ::

というアドバイスです。

で、/etc/ssh/sshd_configを上記のとおり書き変えてみた。さてうまくいくかな?

------------さっそく追記-------------------
errorは無事消えたようだ。

Sea-Bird.orgのくす牧場さんどうもありがとうございました。

-----------080502追記----------------------
マイミクでもあり私のLinuxの師匠でもあるmatchyさんから「っつーかそもそも IPv6 使ってないなら、IPv6 自体を無効にしないと...」とご指摘を頂いて「どうやるの?」と答えてしまったものの、少しは自分で調べなくっちゃ、とログから見直してたら、どうも/etc/ssh/sshd_configを書き変えた副作用があったみたいで、元に戻した。詳細は後で書こう。

-----------080503追記----------------------
実はIPV6の部分をコメントアウトしたらdovecotが動かなくなってしまった。自分の環境がいったいどうなってるんだろう?という疑問を解いていかないといけないな~

後、ログを見直してたら(というか再起動画面を眺めてたら)新たな宿題を発見してしまった。これも後で書きます。

2 件のコメント:

Unknown さんのコメント...

っつーかそもそも IPv6 使ってないなら、IPv6 自体を無効にしないと...

黒さん さんのコメント...

どうやるの?