前提・実現したいこと
cronでリモートサーバにてSCP及びssh接続を自動実行させようとしています。
SSH接続にはssh agentを使用しています。
発生している問題・エラーメッセージ
以下のようにpermission deniedされてしまいます。
Permission denied (publickey).
該当のソースコード
bash
1#!/bin/sh 2 3AGENT=`ls -lt /tmp/ssh*/agent*` 4 5if [ -z "${AGENT}" ];then 6## agentファイルが作成されていなければ以下のコマンドで作成 7eval `ssh-agent` 8ssh-add 9TEMPAGENT="ON" 10 11## 権限も変更します。 12chmod 775 `ls -lt /tmp/ssh*/agent* | awk '{print $9}'` 13 14fi 15 16##環境変数の${SSH_AUTH_SOCK}もcronだと最初は空になっている可能性があるので 17##その場合はexportします。 18 19if [ -z "${SSH_AUTH_SOCK}" ];then export SSH_AUTH_SOCK=`ls -ltr /tmp/ssh*/agent* | head -n 1 | gawk '{print $9}'`;fi 20 21##以下のファイルも権限変更します。 22chmod 0600 ~/.ssh/authorized_keys 23 24scp -i ~/.ssh/authorized_keys remote:/home/user/test.csv ./ 25 26##冒頭でagent作成していれば削除 27if [ -n "${TEMPAGENT}" ];then eval `ssh-agent -k`;fi
###試したこと
echoで以下の状態を確認しました。
・「ls -lt /tmp/ssh*/agent* 」の結果はeval agentで作成した
agentファイルのみ。
・${SSH_AUTH_SOCK}にも上記ファイルがexportされている
・権限もsrwxrwxr-xになっている。
他に設定すべきコマンドなどご存知でしたらご教授いただけますでしょうか。
回答2件
あなたの回答
tips
プレビュー