0

これは私が必要なものです

CGI シェル スクリプトをホストするローカル サーバーがあります。リモートサーバーにファイルがあります。CGI スクリプトで、リモート サーバーからローカル サーバーにファイルをコピーしたいと考えています。

これは私が試したものです

毎回パスワードを入力するのを避けるために、ssh-keygen コマンドを使用してキー ファイルを作成し、公開キー ファイルをリモート サーバーの /root/.ssh/authorized_keys ファイルにコピーしたところ、機能しました。scp user@remotehost:/root/ を実行するたびに。意図したファイルは、手動認証なしでローカル サーバーにコピーされ、これは完璧に機能します。

ここで、CGI スクリプトをトリガーする apache ユーザーにも同じことが必要です。以下のコマンドを使用して、Apache ユーザーのキー ファイルを生成しました。

sudo -u _apache ssh-keygen -t rsa

システム応答は

Enter file in which to save the key (/Library/WebServer/.ssh/id_rsa) 

通常、私の .ssh キーは場所 /root/.ssh に保存されていますが、システムのコマンドがデフォルトで /Library/WebServer になっているのはなぜですか? 2 つの .ssh ファイルを使用できますか?

私が試している以外の解決策はありますか?

ありがとうございました

4

1 に答える 1

1

システム内のすべてのユーザーは、独自の ~/.ssh ディレクトリを持つ必要があります。

ssh が実行されると、ユーザーのホーム ディレクトリで .ssh ディレクトリが検索されます。/etc/passwd または finger ユーティリティを使用して、ユーザーのホーム ディレクトリを確認できます。/etc/passwd を読み取ると、ホーム ディレクトリは最後から 2 番目になります。例えば:

postgres:x:106:115:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

この場合、ホーム ディレクトリは /var/lib/postgresql です。

問題を解決するには、ssh を他に使用しない場合は、id_rsa キーを最初のユーザーから 2 番目のユーザーの .ssh ディレクトリにコピーするだけです (ユーザーの所有権を変更し、ファイル chmod go-rwx を保持します)。 )。

または、以前と同じように新しいキーを生成し、新しい .ssh/id_rsa をリモートの .ssh/authorized_keys に追加することもできます。

最初の方法では、2 人のユーザーが同じ RSA キーを共有することに注意してください。また、CGI スクリプト内から使用できる認証されたキーを持つリモート マシンの root ユーザーを実際に持つべきではないことに注意してください。どちらもセキュリティリスクです。リモート マシンに非特権ユーザーを作成し、それを使用してファイルを転送することをお勧めします。

于 2013-07-31T13:01:21.787 に答える