ログイン中に定期的にSSHキーをロックする

ログイン中に定期的にSSHキーをロックする

私は管理しているいくつかのサーバーに毎日 ssh を使用してログインしており、ログインには ssh キーを使用しています。パスワード付きの ssh キーを生成したため、1 日で初めて ssh を使用するときに、パスワードの入力を求められます。1 日を通して定期的にロックし直して、電源が入っているときに誰かが私のラップトップにアクセスしても、必ずしもサーバーにアクセスできないようにしたいのですが、そのためのオプションが見つかりません。また、キーをロックするコマンドもわかりません。そのようなコマンドがあれば、crontab に追加できます。

おそらく最善の選択肢は、単に SSH キーを使用しないことです。

答え1

おそらく、 というプログラムがssh-agent稼働しているはずです。ssh他のホストに移動すると、sshコマンドはそのホストと通信してssh-agent、キーとパスフレーズを維持します。

デフォルトでは、ssh-agentパスフレーズは永久に(ログアウトするまで)記憶されるため、キーごとにパスフレーズを 1 回だけ入力すれば済みます。

コマンドssh-addが認識している ID のリストを管理するために使用されますssh-agent

が知っているキーのリストを表示するにはssh-agent、次のように実行します。

ssh-add -l

それを作るために忘れるキーとパスフレーズを発行

ssh-add -D

その後、ssh何らかのホストにログインすると、再度パスフレーズの入力を求められます。

また、一生パスフレーズの場合:

ssh-add -t 3600     # 1 hour

しかし、これは私の環境では機能しませんでした (または、何か間違ったことをしました)。N 時間ごとに実行する cron ジョブを設定します。通信に環境変数が必要であり、その変数は cron では設定されていないと思われるssh-add -Dため、これは少し難しいかもしれません。ssh-addSSH_AUTH_SOCKssh-agent

しかし、コメントにもあるように、外出中はノートパソコンを放置せず、ロックしておく必要があります。

答え2

$HOME/.bash_logoutファイルに SSH キーをディレクトリから別のディレクトリに移動する行を記述するだけで済みます~/.ssh/。次に、 でその逆を実行します$HOME/.bash_login

systemd でこれを行う方法については、この投稿を参照してください。

関連情報