私はgithubをやろうとしていますgit プルPHP スクリプトから www-data ユーザーとして実行すると、「ホスト キーの検証に失敗しました」というメッセージが表示されます。メイン ユーザーにはホスト キーが登録されていますが、www-data には ~/.ssh ディレクトリへのアクセス権すらないため、登録されていません。
Ubuntu 18.04では、システム全体のknown-hostsファイルがまだ存在しますか?www-dataユーザーに私のホストへのアクセスを許可するのは安全ではないと思います。~/.ssh-ディレクトリ?
答え1
@GMaster が示唆したように、自動プルには SSH ではなく HTTPS を使用するのが最も賢明な選択のようです。ただし、本当に SSH プロトコルを使用する必要がある場合 (なぜですか?)、対処するオプションknown_hosts
と資格情報がいくつかあります。
のホーム ディレクトリ (私のシステムでは ですが、 で確認してください)
~/.ssh
に、事前設定された を含むツリーを作成します。 手動でホスト キーに接続して検証することで、ファイルを自分で作成できます。このようなファイルとディレクトリに適切な権限 (通常は 0700/0600) と所有権があることを確認してください。known_hosts
www-data
/var/www
/etc/passwd
このファイルを別の場所(適切な権限を持つ)に置き、
-o UserKnownHostsFile=/path/to/known_hosts
上記の両方のアプローチでは、
-o StrictHostKeyChecking
さまざまなオプションを調整して、-o UpdateHostKeys
セキュリティと利便性のバランスを取ります。最後の手段として、 または
/var/www/.ssh/config
コマンドライン オプションを使用して、 www-data のホスト キー検証を完全に無効にすることができます-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
。ただし、これが意味する重大なセキュリティへの影響に注意してください。
そして、すでに疑っていたことを補強します。いかなる状況でもwww-data(または他のユーザー)にあなたのへのアクセスを許可しないでください~/.ssh
。プライベート鍵もそこにあります!
答え2
はい、確かにシステム全体で既知の hosts ファイルがあり、これはデフォルトで です/etc/ssh/ssh_known_hosts
。 を実行しman ssh_config
て検索すると、システムのデフォルトを確認できます。必要に応じて、GlobalKnownHostsFile
このオプションの値を通常どおり ( を使用) 変更することもできます。-o