Ssh

刪除了我的 ssh 密鑰

  • August 4, 2020

我在 Mac (OSX) 上。

我不小心刪除了我的 ssh 密鑰,但我還沒有重新啟動電腦,所以我仍然可以使用我的密鑰訪問伺服器。我猜 ssh-agent 在記憶體中有某種形式的它?

有沒有辦法從 ssh-agent 中檢索密鑰?我還記得密碼等。

取決於你有多少時間。如果您了解 C,最安全的方法是使用 gdb 連接到 ssh-agent 程序(必須是 root)並列印關鍵數據。身份密鑰儲存在一個名為 idtable 的數組中,其中包含一個身份連結列表。因此,您可以列印 BIGNUM 數據(如 (1) 中所定義),如:

(gdb) call BN_bn2hex(idtable[2]->idlist->tqh_first->key->rsa->n)

其中數字 2 是版本(您可能需要 2),最後一個元素是 BIGNUM 之一(其餘是引擎、e、d、p、q、dmp1、dmq1、iqmp)。

現在要使用這些數據,您需要編寫一個小型實用程序,在其中定義一個 RSA 結構(如 (1) 中定義)並填充它們。也許您可以編寫另一個實用程序來自動執行此操作,但是您需要更多時間,您可以手動列印數據。然後你用上面的 RSA 數據呼叫 PEM_write_RSAPrivateKey (2) 函式,你就有了一個新的未加密的rsa 文件。

很抱歉沒有更多細節,但如果你有時間,這可能是一個起點。

(1) /usr/include/openssl/rsa.h

(2) 參見 pem(3) 的手冊頁

引用自:https://unix.stackexchange.com/questions/227647