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

webサーバーでリクエストを受けて、apacheを動作させているnobodyユーザーで、他のサーバーにSSHで接続して、接続先のサーバーでコマンドを実行して、結果を受け取るにはどのように設定すればよいでしょうか。nobodyユーザーだとホームディレクトリがないなどで、うまく設定できていない状態です。

●質問者: loy
●カテゴリ:インターネット ウェブ制作
✍キーワード:Apache SSH Web コマンド サーバー
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● しおり
●27ポイント

suEXEC 機能を使えば良いのではないでしょうか。

suEXEC Support - Apache HTTP Server

suEXEC 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは 異なるユーザ ID で CGI プログラムや SSI プログラムを実行することができます。CGI プログラムまたは SSI プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。


2 ● y-kawaz
●27ポイント

まずサンプルです。

1.apache 権限でパスフレーズ無しの鍵を作成します。

1-1.鍵作成用ページ(keygen.php)を作成する。

<?php
system("ssh-keygen -t dsa -f key/id_dsa -N '' -q");
?>

1-2.apacheで書き込みが出来るように鍵ファイル置き場(key)を作成する。

mkdir key
chmod 777

1-3.keygen.phpにブラウザでアクセスして key/id_dsa と key/id_dsa.pub が作成されたことを確認する。

2.公開鍵(key/id_dsa.pub)を接続先サーバの ~/.ssh/autorized_keys に追加する。

2-1.sshコマンドを実行するページ(ssh.php)を作る

<?php
system('ssh -o "StrictHostKeyChecking no" -i key/id_dsa -l user1 -p 10022 host1 ls');
?>

2-2.このページにアクセスしてみて接続先で ls が実行されたら成功です。


apache に ssh を実行させるポイントは大体以下の通りです。


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


3 ● y-kawaz
●26ポイント

↑の回答の補足ですが、suexec 環境で CGI の場合はapache権限ではなく、ユーザ権限で実行できるので秘密鍵のパーミッションとかはあまり気を遣う必要は無いと思います。

nobodyユーザーだとホームディレクトリがないなどで、うまく設定できていない

ということなので、suexecされていないCGIか、php環境などを想定して回答しました。

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

◎質問者からの返答

はい、まさしくPHP環境です。

関連質問


●質問をもっと探す●



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