【Free BSD】


http://q.hatena.ne.jp/1148019523
の続きです。


BSDからCentOSに接続させて、cronでバックアップさせるため、
SSHの認証を自動化させたいと考えています。

以下のファイルを作成し、パーミッションを755にしました。
これを、手動で打つと、成功します。

----------
スクリプト remote_backup.sh
-----
#!/bin/csh
cd /example_path
eval `ssh-agent`
ssh-add /example_path/id_rsa
sftp user@example.com:/example_backuppath/backup.zip
----------
※これを、/example_path/remote_backup.shすると、成功します。


しかし、cronで実行させると、以下のエラーメッセージを吐き出して、失敗します。

----------
SSH_AUTH_SOCK=/tmp/ssh-nDZa4NwX5p/agent.70368: Command not found.
export: Command not found.
SSH_AGENT_PID=70369: Command not found.
export: Command not found.
Agent pid 70369
Could not open a connection to your authentication agent.
Connecting to example.com...
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
Connection closed
----------

原因と解決方法をご教授ください。

回答の条件
  • 1人2回まで
  • 登録:2006/05/23 13:06:16
  • 終了:2006/05/23 13:41:27

ベストアンサー

id:tadashi0805 No.1

tadashi0805回答回数287ベストアンサー獲得回数292006/05/23 13:26:36

ポイント60pt

手動でコマンドを打った時のユーザーと、cron実行ユーザーは同じでしょうか?

また、手動実行のユーザーのシェルは、csh系でしょうか?

ある環境で、bashでログイン状態でcshを起動し、ssh-agentを動かすと、結果はcshコマンド体系でなくsh系(exportとか)になりました。

cronは、shを介してコマンドを起動するので、その環境変数などが影響していると思います。

id:keijiro

> 手動でコマンドを打った時のユーザーと、

> cron実行ユーザーは同じでしょうか?

ユーザーは同じです。

> また、手動実行のユーザーのシェルは、

> csh系でしょうか?

前回質問したときに、

> 「setenv: not found」と出ているということは、

> シェルがBSH系なのではないですか?

> #!/bin/csh

> をシェルの一行目に加えて、cshに実行させるか

と回答いただいたので、そのとおりやると、

手動での実行は、うまくいきました。

> cronは、shを介してコマンドを起動するので、

> その環境変数などが影響していると思います。

なるほど。

cronは、shを介してという回答を理解した後、

前回の回答をもう一度見直しました。

そして、ssh-agent -sとして、実行させたら、

うまく成功しました。

ありがとうございます。

2006/05/23 13:41:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません