key_verify failed for server_host_key

cutxout2005-07-27


ふと気がついたら、dailyでやっているはずのバックアップが動いていない。スクリプトを手動で実行してみると、key_verify failed for server_host_keyというエラーが帰ってくる。sshの鍵認証に失敗しているようだが、鍵の設定なんて絶対に変更するはずがない。日時から逆算すると、この前のmake worldがトリガーになっているようだ。
と思ってgoogleしてみると、日本語の情報源が全然引っかかりませんね。英語にして調べてみたら、こんなのを発見。まさか、コンパイル高速化のために/etc/make.confに書き込んだCFLAGS= -O2 -pipe -funroll-loopsが原因だったとは。きづかねーよ、こんな副作用..orz
とりあえず、原因とおぼしき-funroll-loopsを除外した/etc/make.confに変更して、再度make world中です。寝る前に終わる可能性は少なそうだ。

# CFLAGS controls the compiler settings used when compiling C code.
# Note that optimization settings above -O (-O2, ...) are not recommended
# or supported for compiling the world or the kernel - please revert any
# nonstandard optimization settings to "-O" before submitting bug reports
# to the developers.
# Note also that at this time the -O2 setting is known to produce BROKEN
# CODE on the Alpha platform.
#
#CFLAGS= -O -pipe
#CFLAGS= -O2 -pipe -funroll-loops
CFLAGS= -O2 -pipe

http://www.monkey.org/freebsd/archive/freebsd-stable/200408/msg00122.html

--------------------------------------------------------------------------------

Subject: key_verify failed for server_host_key solution 
From: booloo at ucsc.edu (Mark Boolootian) 
Date: Tue Aug 17 11:55:44 2004 

--------------------------------------------------------------------------------

Folks,

I found that SSH broke after an upgrade to 4.10 stable.  The
problem I saw was the same one reported by Daren Desjardins
back in March.  The symptom is a client failing to establish a
connection with the complaint:

  key_verify failed for server_host_key

The culprit turns out to be a problem in libcrypto that is tickled 
by too aggressive optimization settings.

When building 4.10, my make.conf included:

  CFLAGS= -O -pipe -funroll-loops -ffast-math
  COPTFLAGS= -O -pipe -funroll-loops -ffast-math

By removing both the unroll-loops and fast-math optimizations,
and rebuilding libcrypto, the problem disappears.  For anyone
unfamiliar with rebuilding libcrypto, the following should do the
job:

  cd /usr/src/secure/lib/libcrypto
  make clean
  make obj && make depend && make all install

mb

しまった..

make world初めてに時間ほど経過。なんか違和感を感じてKERNCONFを開いたら、こっちにもばっちり書いてある。上の説明には/etc/make.confにしか言及してないけど、念のためこっちもはずしておこう。ロスタイム2時間は痛いです。

machine         i386
cpu             I686_CPU
makeoptions     COPTFLAGS="-O2 -pipe -funroll-loops -ffast-math"

あれれー?

気がついたら、HotSaNICによる監視が動いていない。snmpd自体は起動しているようですが、データ取得が出来ていないぞ。コレもmake.confの所為なんだろうか?なれないことやるとこういうところで大変です。

追記 7/28

  • key_verify failed for server_host_keyに関する原因は上記の通りで、make world -> rebootしたら無事に実行できました。
  • 問題はHotSaNICの方で、こちらの原因はperlのモジュールが置いてあるパスがおかしくなったことによるみたいだ。そういえば、別口でルータのトラフィックを取得していたスクリプトでも、突然Net::Telnetが使えないというエラーをはき続けていたっけ..やりなれないことをやると後始末が大変だ。orz
BEGIN failed--compilation aborted at ./read-data.pl line 5.
Can't locate loadable object for module RRDs in @INC (@INC contains: .. /usr/local/lib/perl5/site_perl/5.005/i386-freebs
d /usr/local/lib/perl5/site_perl/5.005 . /usr/libdata/perl/5.00503/mach /usr/libdata/perl/5.00503) at ./read-data.pl lin
e 5
  • 多分、その原因はmake.confから↓の記述を削除してしまったことくらいしか思いつかないので、コレを追記した状態でもう一回make worldしてみよう。コレでだめなら、環境変数をいじるかシンボリックリンクするなりで対応しましょう。
# -- use.perl generated deltas -- #
# Created: Wed Oct 20 21:57:07 2004
# Setting to use base perl from ports:
PERL_VER=5.8.5
PERL_VERSION=5.8.5
PERL_ARCH=mach
NOPERL=yo
NO_PERL=yo
NO_PERL_WRAPPER=yo