cronジョブで「ssh-add -D」の実行が機能しません。

cronジョブで「ssh-add -D」の実行が機能しません。

UbuntuサーバーシステムにopenSSHサーバーを設定し、公開/秘密鍵(パスワードなし)を使用するように構成しました。クライアントがサーバーに接続するときにパスワードと鍵の確認を要求したいので、そのパスワードを利用して秘密鍵を生成しました。問題は、クライアントがサーバーに初めて接続しようとしたときにのみパスワードが必要であり、同じクライアントからの後続の接続は、パスワードを再度要求せずに自動的に接続されることです。 1つの例外は、クライアントコンピュータが再起動される場合ですが、これは私が望むものではありません。

私はクライアントコンピュータへのフルアクセス権を持っているので、クライアントコンピュータからSSHエージェントのすべてのIDを削除する「ssh-add -D」コマンドを使用してcronジョブを追加することにしました。これは、クライアントが次に試みるときを意味します。接続すると、最初と同様にパスワードを入力するように求められます。毎時間実行するようにcronジョブにこのコマンドを追加しました(接続しようとするたびにパスワードを要求しなくても満足です)。

残念ながら、ジョブの実行時に何もしないようです。ジョブが実際に実行されたことを確認し、さらにコマンドを追加しました。すべてのコマンドが期待どおりに機能しましたが、ssh-addだけが正しく機能していないようです。

次の行を使用してクローンタスクを追加しました。

user@ubuntu:~$ crontab -u user -e

その後、編集のためにvimを選択し、次の行を追加しました。

* * * * * ssh-add -D

保存されました。

私は何が間違っていましたか?

注:私は初めてLinux(Ubuntuを使用)に触れたので、いくつかの高度な概念を理解できないかもしれません。簡単に回答していただければ幸いです:)

答え1

通常、プログラムがcronで実行されると、環境変数が異なるため、ssh-addssh-agentを見つけることができません。

代わりに、次のスクリプトを呼び出してすべてのプロキシを試して$SSH_AUTH_SOCK正しく設定します。

#!/bin/sh
for agent in /tmp/ssh-*/agent.*; do
    export SSH_AUTH_SOCK=$agent
    if ssh-add -l 2>&1 > /dev/null; then
        # working ssh-agent found
        ssh-add -D # delete all identities
    fi
done

答え2

おそらく追加すれば十分でしょう。

AddKeysToAgent yes

顧客に.ssh/config

答え3

Joeferの答えとJillのコメントのためにこれを行いました。

echo $SSH_AUTH_SOCK 

コマンドラインでは、次のように表示されます。

/run/user/1000/keyring/ssh

したがって、crontabで実行すると、これは私にとって効果的です。

export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh && ssh-add -D

関連情報