VPSで遊ぶ -その8 ServersMan等のOpenVZ系VPSでは /etc/init/ssh.conf内の oom never は絶対に無効にしておくこと!!(有効にしたり、コメントアウトを外したりするとオワタ\(^o^)/状態になる。)

皆様お久しぶりです。本日は注意喚起の小ネタ。

先日ServersMan VPSUbuntu君をaptitude upgrade した時にハマってしまった小ネタです。


ServersMan等のOpenVZ系VPSUbuntu(確認したのは10.04)では
/etc/init/ssh.conf内の oom neverを有効にすると、upstartssh-serverが開始出来ず外からsshで繋がらないオワタ\(^o^)/鯖ができあがります。

決してaptitude upgradeで /etc/init/ssh.confを入れ替えないように。

入れ替えるともれなく oom never 行が有効の/etc/init/ssh.confが設置され、ssh端末を閉じた瞬間から二度と繋がらなくなります。(aptitude 途中でserviceの自動再起動が走り地雷設定ファイルが読み込まれるため)


ssh(openssh-server)のaptitude upgrade途中に設定ファイル入れ替えるがよろしいか[y/N] みたいな質問が出ます。
ここのデフォルト選択肢はNなのですが y にするともれなく地雷が仕込まれます。お気をつけください。

NG オワタ\(^o^)/鯖の例

/etc/init/ssh.conf
oom neverが有効で、この状態で端末を閉じるともれなくsshで繋がらなくなります。
ssh接続NGの例:

# ssh - OpenBSD Secure Shell server
#
# The OpenSSH server provides secure shell access to the system.

description     "OpenSSH server"

start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
umask 022
# replaces SSHD_OOM_ADJUST in /etc/default/ssh
oom never  #<<<<<-----コレが生きてると終了のお知らせ

pre-start script
    test -x /usr/sbin/sshd || { stop; exit 0; }
    test -e /etc/ssh/sshd_not_to_be_run && { stop; exit 0; }
    test -c /dev/null || { stop; exit 0; }

    mkdir -p -m0755 /var/run/sshd
end script

# if you used to set SSHD_OPTS in /etc/default/ssh, you can change the
# 'exec' line here instead
exec /usr/sbin/sshd -D


OK インスコ直後の/etc/init/ssh.conf

/etc/init/ssh.conf
さりげなく oom never はコメントアウトされてます。

ssh接続OKの例:

# ssh - OpenBSD Secure Shell server
#
# The OpenSSH server provides secure shell access to the system.

description     "OpenSSH server"

start on filesystem
stop on runlevel S

expect fork
respawn
respawn limit 10 5
umask 022
# replaces SSHD_OOM_ADJUST in /etc/default/ssh
#oom never

pre-start script
    test -x /usr/sbin/sshd || { stop; exit 0; }
    test -e /etc/ssh/sshd_not_to_be_run && { stop; exit 0; }
    test -c /dev/null || { stop; exit 0; }

    mkdir -p -m0755 /var/run/sshd
end script

# if you used to set SSHD_OPTS in /etc/default/ssh, you can change the
# 'exec' line here instead
exec /usr/sbin/sshd



参考:
"oom never" makes ssh upstart job fail to start in OpenVZ container

https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/634900


参考2: Upstart issues

http://linux-vserver.org/Upstart_issues

Init procedure doesn't complete
SSH

If you've completed all above steps and some init scripts doesn't get invoked at all (most notably old SYSV init scripts) you might have encountered same error that I did. In Lucid guest I had to comment out following line in /etc/init/ssh.conf:

# replaces SSHD_OOM_ADJUST in /etc/default/ssh
oom never

to

# replaces SSHD_OOM_ADJUST in /etc/default/ssh
#oom never

After commenting out this line initialization completed successfully.

えー私はやらかしてしまいました。惰性で更新後に鯖三台程バックアップから再インスコしました。ご注意あれ。


ではでは!