ようこそゲストさん

chibilog

2007/10/14(日) サーバに接続できなくなった件

はてブ情報 はてブに登録 はてブ数 2007/10/14 17:46 未分類

さてと、うちの環境でもちょっとお話しますよ。

うちの机には、何体ものフィギュアが設置されてます。そして、机の正面の壁には、
アルカディアの何月号かに付いてきた、IIDX GOLDの絶対領域モエスなお姉さんの
ポスターが貼っておりますよ。

こんな環境のお話ではなく・・・

今って、このブログだとかは自宅サーバで動いてるんだけど、
このサーバってのが実家に設置してあるものなんですよ。
それで、僕は今は実家に住んでないとw 実家サーバってやつですな。

なので、このサーバをメンテナンスしたりだとかする時は、今の僕のお住まいから
SSH で接続してあれこれやるわけですが、SSH が接続できなくなってしまったのですよ・・・
マジで頼みの綱が SSH しか無いもんだから、これで接続できなくなると
実家に戻って、直接キーボードとディスプレイを刺して(ry って感じなわけですよ。
まぁ、徒歩2分くらいのとこなんで何ら苦ではないのですが・・・
これが実家がアメリカにあるだとかになると大変なお話ですよ。

それで、まぁ今回接続できなくなったのですが、とりあえずやったことと言えば、
sshd_config の設定を若干修正して、sshd をリスタートしたくらい。
その直後に接続不可ですよ。あれ・・・設定ファイルの書式とかでも間違えたかな・・・
確かに寝ぼけながらやった作業だから、ありえると言えばありえますが、
でも、やった作業って確か、「yes」 → 「no」 に変更するだけだったから、
いくら僕でも間違えないと思ったわけですよ・・・

それで、このサーバからは定期的に、ログの一部の貼り付けだとか、
現在動いてるサービスだとかの情報がメールで届くわけですが、それを見てみると、
確実に sshd は起動してない状態ですた。

ただ、注意深くログを見てみると原因が分かったのですよ。
sshd のリスタート直後くらいに以下のようなログが出てたんですよ。


sshd[21122]: fatal: Cannot bind any address.
sshd[20991]: Received signal 15; terminating.

ソケットにポートを割り当てられなくて(bind() が失敗して)、糸冬了って感じかな?

どうやら流石の僕も、「yes」 → 「no」 に変更する処理で間違いは無かったということですよ。
今回は設定ファイルは特に問題無し。

そして思い出しましたよ・・・この sshd をリスタートする前にやっていたことを・・・

耐久テストみたいなのをやってて、このサーバの FTP だとか HTTP だとか SSH に
コネクションを貼りまくってたんですよね・・・
それで、ソケットディスクリプタを使い切ってる状態で、タイミング良く、sshd を
リスタートしたものだから、bind() が失敗して、sshd の起動失敗。
それで、SSH での接続が出来なくなったというわけね。

まぁ、なんだタイミングが悪いというか何というか・・・
てか、ソケットディスクリプタ(ファイルディスクリプタ)の数を増やしておくわ・・・

とりあえず、上記のような原因と分かったので、単純にssh さえスタートし直せば、
上がることが分かったので、徒歩2分歩くのが面倒臭かったので、
お母様に電話して、このサーバをリブートしてもらいました。
リブート後はちゃんと sshd もスタートしてくれて、今は無事に接続できております。


さて、今回みたいに、単純に設定ミスもなく、sshd が落ちてた時に、
お母様の力を借りずに sshd をスタートさせたいと思ったのです。
なので、以下みたいなスクリプトを作成して、cron に登録しておきました。

このスクリプトは、sshd が起動しているか確認し、起動しているなら特に何もせず、
sshd が起動してないようなら、sshd を起動させるという単純なスクリプトです。
これを 3時間置きくらいに実行するように、cron に登録しておきました。
これで万が一、今回みたいに sshd が落ちても cron で実行してくれて復旧でつ。

このスクリプトの名前は、dead_or_alive.pl としてみますた。
あの水着のお姉さんたちがビーチバレーとかやるゲームですな。


#!/usr/bin/perl
use strict;
use warnings;

my $lsof = '/usr/sbin/lsof -nPi:';
my $service = 'sshd';
my $port = "22";

open IN, "${lsof}$port |" or die "Can't exec lsof: $!";
my $result = <IN>;
close IN;

unless (defined($result)) {
    system "/etc/init.d/$service start";
}


1: POSE URL 2007年10月15日(月) 午後3時17分

お母様クソワラタwwwwwwwww
今度chibiたんの部屋に突撃するわwwwwwwww

2: chibi URL 2007年10月16日(火) 午後11時15分

ちょwwww笑うとこないwwww
お母様使うの基本だってwww

うちに突撃とか!!早く来なよw
ベランダにダンボール用意して待っててやるからさーーww

3: POSE URL 2007年10月17日(水) 午後8時22分

え、chibiたんのブログとか基本笑いながら観るものでしょ?
つーか又ベランダかよwwwww
僕が通してもらえる場所はベランダしか無いのかwwww

4: chibi URL 2007年10月18日(木) 午後8時25分

えええええええ、今回のは凄く真面目な日記だよwww
そのなんだ、トラブル集というか何というか・・・
ベランダじゃダメなのかよwwんじゃあ、トイレでもいいけど、どっちがいい??
うちのベランダ無駄にスペースあるから快適だよ??奥行きないけど・・・


名前:  非公開コメント   

URL(任意):
  • TB-URL  http://chibilog.name/046/tb/