ブログトップ 記事一覧 ログイン 無料ブログ開設

刺身☆ブーメランのはてなダイアリー

2009/01/16(Fri)

ssh localhost したら ssh_exchange_identification: Connection closed by remote host エラーでログインできない場合に疑うべきこと

あるサーバで localhost に対して ssh したら ssh_exchange_identification: Connection closed by remote host エラーでログインできなかったので少し調べた。

/etc/hosts.allow, /etc/hosts.deny

まずこのファイルを疑う。 <delete datetime="2009-07-21T10:36:55+09:00">no title</delete> 追記: リンク切れてたので web.archive.org のキャッシュを参照のことssh_exchange_identification: Connection closed by remote host (2009/07/21)

設定の仕方は 設定ファイル(/etc/hosts.allow、/etc/hosts.deny)の編集 を参照。

TCPWrappers とか inetd とかにまつわるこんな話も 83’s : hosts.allow, hosts.denyについて 要するに sshd は /etc/hosts.allow と /etc/hosts.deny を参照する、ということだけ知っていればこのケースでは問題ない。

tcpserver, tcprules(レアケース?)

/etc/hosts.allow, /etc/hosts.deny を適切に設定しても依然として ssh localhost が失敗することがある(俺が今回そうだった)。上にあげた 83’s : hosts.allow, hosts.denyについて によると inetd のもとで動かしていない場合でも sshd デーモンは /etc/hosts.allow ファイルを参照する。にもかかわらず反映されないということは違うルールのもので起動されているはず、ということで(略)、要するに今回のサーバでは tcpserver で起動していた。

で、 /service/sshd ディレクトリをのぞいてみると allow とかいうファイルが置いてあり、 run スクリプトのなかで tcprules というプログラムを使っている。 The tcprules program を読んで、接続を許可する IP アドレス(今回は 127.0.0.1)を allow ファイルに追加して sshd を再起動。 svc -t /service/sshd で、 ssh localhost が無事成功した。

ちなみに

なんで localhost に ssh したかったのかというと、 404 Not Found にそう書いてあったから。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/a666666/20090116/1232082813