登入時定期鎖定 ssh 金鑰

登入時定期鎖定 ssh 金鑰

我每天使用 ssh 登入我管理的幾台伺服器,並使用 ssh 金鑰登入。因為我使用密碼產生了 ssh 金鑰,所以一天內第一次使用 ssh 時,系統會提示我輸入密碼。我希望它在一天中定期再次鎖定,這樣有人在我的筆記型電腦打開時訪問它並不一定可以訪問伺服器。我找不到這個選項,也找不到鎖定鑰匙的指令。如果有這樣的命令,我可以將其添加到 crontab 中。

也許最好的選擇就是不使用 ssh 金鑰。

答案1

您可能有一個名為ssh-agent“運行”的程式。當您ssh連接到其他主機時,該ssh指令會與該主機通訊ssh-agent以維護金鑰及其密碼。

預設情況下,它ssh-agent會永遠記住密碼(直到登出),因此您只需為每個金鑰輸入一次。

命令ssh-add用於管理ssh-agent 已知的身份清單。

若要顯示已知的密鑰列表ssh-agent,請發出

ssh-add -l

為了做到這一點忘記您的金鑰和密碼,問題

ssh-add -D

當您進入某個主機時ssh,系統會再次提示您輸入密碼。

也可以提供一個壽命對於密碼:

ssh-add -t 3600     # 1 hour

但這對我來說不起作用(或者我做錯了什麼)。我會設定一個ssh-add -D每 N 小時執行一次的 cronjob 。這可能有點棘手,因為ssh-add需要環境變數SSH_AUTH_SOCK來與 cron 進行通信,ssh-agent而該變數可能未在 cron 下設定。

但是,正如評論中所述,您外出時不應讓筆記型電腦無人看管,而應將其鎖定。

答案2

您可以在檔案中寫入一行$HOME/.bash_logout,將 SSH 金鑰從您的~/.ssh/目錄移至另一個目錄嗎?然後在 中執行相反的操作$HOME/.bash_login

請參閱這篇關於使用 systemd 執行此操作的文章。

相關內容