« ubuntu 11.04 xinetd経由のsshdの反応を速くする(カスタマイズその4) | トップページ | ubuntu 11.04 StartUp-ManagerのインストールとGrubの設定 »

2011年6月 9日 (木)

ubuntu 11.04 xinetd経由でsshdを起動する(設定の変更)

☆xinetd経由でsshdを起動するときのバグ!

(バグはあんまりだよね・・・)

スーパーサーバー(xinetd)もインストール、そしてスーパーサーバー経由でのsshdの起動もできるようになって、昨夜は満足して就寝。
一夜明けて、「今日からカスタマイズはTera Termから行おうか」などと、NCISのマクギーにでもなったような気分で接続を試みると・・・繋がりません!!!
最初はパスワードを間違えたので、「そういえば認証に失敗したときもUSERIDを引きにいっていたな。あそこは削除していないから、それで時間がかかるのだろうなぁ」と考えました。ついでに、/etc/xinetd.d/sshdの中でflags=REUSEの設定も入れていないからTera Termで二つ目のターミナルを起動して接続を図っても時間がかかるのだろうと考えておりました。
まことに失敗から学ぶことは多い(→負け惜しみ・・・)

しかし、いつまで待っても繋がりません。かなり複雑なログインパスワードなので、一回や二回は失敗するのはいつものこと。さらに3回ほどやりなおして、「これは繋がらないのだな」と納得しました。

/var/log/auth.logを確認してみると、昨日と同じ
fatal: Missing privilege separation directory: /var/run/sshd
の文字が目に飛び込んできました。

$ ls /var/run

と確認しても、ディレクトリは存在していない。
要するに昨夜の対応は、根本的ではなかったということは理解しました。
まずは、/var/runの意味から確認。
Pocketstudio.jp Linux Wiki(http://pocketstudio.jp/linux/?FHS%2F5.%20%2Fvar%20%B3%AC%C1%D8#content_1_31) にて説明を発見。なるほど、起動時に削除されるのかと納得。

でも、そういうことなら、xinetdからのsshdの起動時にmkdirするのが、ごく当たり前の対応のような気がします。
何故、そうなっていないのか、不思議です。
まあ、生じていることが分かったので、どなたかが対応されているだろうとgoogleにて「xinetd sshd /var/run ubuntu」で検索するとありました。
ubuntu日本語フォーラムにも同様の障害報告(https://forums.ubuntulinux.jp/viewtopic.php?id= 2789)があるのですが、これも私と同じ対処。
いくつかのサイトでも、同様に/var/run/sshdを作ることで良しとしていました。
やっとみつけたのが、
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/45234
いや~、いきなりバグときましたか。バグというより、設定が不足しているだけのような気もするし。
スマートではないけど、rc.localで力づくで作ってしまうというのは、まあありえます。
自分で理解できるので、とりあえずはこれ。

# Create the PrivSep empty dir if necessary
if [ ! -d /var/run/sshd ]; then
   mkdir /var/run/sshd
   chmod 0755 /var/run/sshd
fi
    

このサイトの記事を読んでいたら、Debianでは2007年11月28日に対応済みという記事を引用している方がいました。
ubuntuはdebianからの派生ディストリビューションなので、こういう修正は自動的に反映されるのだろうと思っていましたが、なかなかそうもいかないようですね。

あと、いろいろなサイトを確認していると、/etc/sshディレクトリにsshd.confという設定ファイルがあることも分かりました。
この中に、

#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

という項目があるので、きっとこれを「no」にするという対応方法もあるのでしょう。
やはり、バグというよりも、設定がちぐはぐなだけというところでしょう。

xinetd.confのmanを見ても、server_args -fの-fオプションの説明が見つからないのですが、先人達の/etc/xinetd.d/sshdの記述例を見る限り、別にあるファイルの内容を読み出す指定だろうと推測できます。sshd.confには、いろいろ書いてあるので、とりあえずこれを取り込むことと、flags=REUSEの指定を /etc/xinetd.d/sshdに追加いたしました。

service ssh
{
        flags        	= REUSE
    	disable         = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/sshd
        server_args     = -i -f /etc/ssh/sshd_config
        log_on_success  += DURATION
        nice            = 10
        only_from   	= 192.168.13.{11,12,13,14,15,16,17,18,19}
}

今回は、xinetdを再起動するのではなくて、PCを再起動することで、設定の確認を行います。
やっと、Tera TermもWinSCPもあっさり繋がり、安心いたしました。
ちなみに、auth.logで見逃しておりましたが、START; ssh pid=xxxxやEXIT: ssh pid=xxxxの記述の前にはxinetd[xxx]ときちんと書かれておりました。恥ずかしい(T_T)

« ubuntu 11.04 xinetd経由のsshdの反応を速くする(カスタマイズその4) | トップページ | ubuntu 11.04 StartUp-ManagerのインストールとGrubの設定 »

Ubuntu」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/575454/51896639

この記事へのトラックバック一覧です: ubuntu 11.04 xinetd経由でsshdを起動する(設定の変更):

» Kubuntu 11.04 xinetdのインストールとxinetd経由のsshdの起動 [豆腐と蒟蒻]
実際に行ってみて、当たり前ですが、Ubuntuとほとんど変わりはありませんでした [続きを読む]

« ubuntu 11.04 xinetd経由のsshdの反応を速くする(カスタマイズその4) | トップページ | ubuntu 11.04 StartUp-ManagerのインストールとGrubの設定 »

2014年11月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ