0

scp 操作を実行して、1 つの Synology DiskStation (Linux を実行) からローカル ネットワーク上の複数の Mac OSX コンピュータにファイルを転送する Python スクリプトがあります。関連するすべてのマシンで RSA 秘密鍵と公開鍵のペアをセットアップしました。管理者ユーザーとして NAS ドライブからこの python スクリプトを呼び出すと、すべてが期待どおりに機能します。私の NAS ドライブの crontab ファイルは、まったく同じ方法でスクリプトを実行するために、同じ管理者ユーザーを指定しています。ただし、scp は終了ステータス コード 1 で失敗します。

この動作の原因は何ですか?

[アップデート]

scp -v (または scp -vv) を使用すると、より多くの情報がレポートされます。また、正しいキーが提供されており、認証が期待どおりに機能していることもわかります。また、いくつかの OSX マシンで動作していることにも気付きましたが、すべてのマシンでは動作しませんでした。

4

1 に答える 1

0

.ssh/known_hosts と .ssh/authorized_keys がすべて管理者用に配置されているが、ルート用には配置されていないことを確認しました。何らかの理由で、python スクリプトが crontab の下で実行されたときに、チェックされた .ssh/known_hosts は、管理者ユーザーの known_hosts ではなく、ルートの known_hosts でした。したがって、この課題は scp コマンド中に発生し、tty ではないため、ルートの known_hosts ファイルをチェックしただけで、リモート ホストが見つからず、失敗しました。すべての OSX リモート ホストを known_hosts ファイルに追加すると、スムーズに動作しました。

別の (そしてより安全な) 解決策は、管理者ユーザーの下に別の crontab をインストールすることだったと思いますが、私がしたことはより高速でした。

于 2013-02-05T20:34:40.673 に答える