人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

bashスクリプトのcgiからsshで他のマシンにアクセス出来ません
"Could not create directory '/var/www/.ssh'. Host key verification failed."

http://server/cgi-bin/getXXXX.cgi?host01+host02
の様にして以下のスクリプトにアクセスしています。

#!/bin/bash

function htwrite {
echo $* | sed "s/$/<br>/g"
};

echo "Content-type: text/html"
echo ""

echo "<html><head>"
echo "<title>getclustername</title>"
echo "</head><body>"

htwrite "$(pwd)"
htwrite "$(who)"

htwrite "args: $*"
for arg in $*
do
htwrite "$arg clusters is:"
ssh $arg getclustername 2>&1
htwrite ""
done

echo "</body></html>"
#-----おわり------
結果、ブラウザに以下の様に表示されます。
host01 clusters is:
Could not create directory '/var/www/.ssh'. Host key verification failed.
host02 clusters is:
Could not create directory '/var/www/.ssh'. Host key verification failed.

host01とhost02には公開鍵暗号でパスワード無しでログイン出来ています。
また、このスクリプトをbashプロンプトから起動するとうまくいきます。
getclusternameというのはsshのログイン先に置いてあるスクリプトで、結果を標準出力に返します。
pwdやwhoの返事はちゃんと返ってきています。

サーバーはFedora release 8 (Werewolf)とapache
クライアントはwindows/Operaです。

●質問者: neuromancer_sho
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Apache bash CGI echo Fedora
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● t_shiono
●32ポイント

sshコマンドに -i あるいは、-F オプションを指定して、鍵などの情報を与えてあげる必要があると思います。


neuromancer_shoさんがバッシュプロンプトから起動するとうまくいくというのは、

例えば、ユーザID:shoでログインして、いる状態で起動しています。

CGIから実行した場合は、apacheのプロセスから起動されますので、ユーザapacheやhttpdなどが起動することになります。


ユーザshoが起動した場合には、デフォルトで、/home/sho/.ssh以下に設定ファイル、及び、鍵があるという動作になります。


今回の現象は、httpdの実行しているユーザのHOMEが/var/wwwとなっているので、デフォルトの動作として、/var/www/.ssh以下を探索することになります。そのため、上記エラーとなっているかと思います。


そのため、

-f /home/sho/.ssh/config

などのオプションをつけて起動するなどすると、うまくいくのではないかと思います。

詳しくは、sshのマニュアルを見てください。


http://www.unixuser.org/~euske/doc/openssh/jman/ssh.html

◎質問者からの返答

回答ありがとうございます。

しかし、スクリプト内で実行したwhoコマンドで表示されるユーザーは例で言うところの sho になっているのです。

そういう場合でも sho 以外のユーザで起動されている可能性があるのでしょうか?


2 ● t_shiono
●38ポイント

suexecか何かを利用しているのでしょうか?

ともかく、whoでshoが返ってくるとすると、実行ユーザは問題ない気がします。

すると、以下に関連質問がありましたが、環境変数が怪しい気がします。

http://q.hatena.ne.jp/1195312726

ここにもありますが、HOMEを指定するとうまくいくのかもしれません。

何かの参考になれば。

◎質問者からの返答

suexecというのは知らないので使ってないと思います。

sshを受け付ける側の/var/log/secureを見てみたら、Failed password for apache from .... となっていました。どうやらwhoで表示されるユーザとsshのユーザは違うみたいです。

HOMEを変えたら Host key verification failed. だけになりました。

何か見えてきたような???

こうなったらapache用のkeyを作ってやろうと思ったら、

#su apache

This account is currently not available.

これは/etc/passwordをいじると解決したので、apache用のkeyを/var/www/.sshに作って、受け入れ側のauthorized_keysに入れてあげたらうまくいきました。解決です。

今気付いたんですが、whoとwhoamiは違うんですね・・・・

whoamiだと"apache"とでてきました。

どうもありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ