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

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

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 にそう書いてあったから。

Hadoop を試す (Cluster セットアップできず)

Hadoop を試してみる。インストールするだけで終わり、じゃなくて今度は Cluster 構成が動くようにするのが目標。

検索してもあまり日本語の情報が出てこない。何度ぐぐっても同じようなページしか出てこなくて困ったので、諦めて Cluster Setup をじっくり読む。 NameNode と JobTracker は exclusively (排他的)なマシンでないといけないと。だから三台いるってかいてあったのだな。そういうわけで三台の ssh とか /etc/hosts とか hadoop-site.xml とか slaves とかをちゃんと書いてそろえてやる。

  • NameNode 192.168.0.101
  • JobTracker 192.168.0.102
  • DataNode/TaskTracker 192.168.0.103

こんな感じで割り振る。よく使うコマンドは以下:

$ bin/hadoop namenode -format
$ bin/start-dfs.sh
$ bin/start-mapred.sh
$ bin/start-all.sh
$ bin/hadoop fs -ls
$ bin/hadoop fs -put /path/to/data/ input
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'REGEXP'
$ bin/hadoop jar contrib/streaming/hadoop-*-streaming.jar -input input -output output -mapper 'command' -reducer 'command' [ -file '/path/to/file' ] [ -file '/path/to/file' ]
$ bin/stop-dfs.sh
$ bin/stop-mapred.sh
$ bin/stop-all.sh

で、やってみると NameNode のほうでは LiveNodes に 192.168.0.103 が出てくる、のだけど JobTracker のほうでは Nodes が 0 だった。 Nodes が 1 になって 192.168.0.103 が出てこないといけないのに。試しにこの状態のまま jar ってみたら 09/01/16 18:38:19 INFO mapred.JobClient: map 0% reduce 0% のままずっと止まってしまった。名前解決とか、設定ファイルの書き損じとか、些細なミスが原因な気がする。が解決できず。

今日のコマン道

アクセスログ全部でどれくらい容量食ってるんだ、ってのを知りたかった。ファイルのサイズを得るコマンドがきっとあるはずだけど知らないので仕方なく。

#for log in access_log.200* ; do perl -e "print -s qq{$log}, qq{\n}" ; done | perl -e 'while(<>){$bytes+=$_}print $bytes/1024/1024, qq{\n}'

今日の .emacs

Cocoa Emacs にしたら region を pbcopy へ送る emacs lisp がうまく動かなくなった。このへんいじるべきかなーと思ってこんな風に変えた。

;; X Window System のクリップボードとヤンクを共有する (ターミナルから起動するとダメ)
(when (eq window-system 'x)
  (setq x-select-enable-clipboard t))

でも意味なかった。そもそも普通に M-w とかすればクリップボードに入るからふつうに Firefox とかでペーストできる。こういうところが OSX ネイティブで動いてる強みだよねー、とか言葉の意味もよくしらずに言ってみる。 OSX ネイティブってどういうことだよ。

ちなみに Cocoa Emacs で window-system を評価すると ns というシンボルが返る。 nextstep の意味だろう。