似乎 ssh-add -K〜/ .ssh / id_rsa
會加載您的密鑰,但每次重新啟動時都會要求輸入密碼。
我正在尋找一種不需要我在兩次登錄之間重新輸入密鑰密碼的解決方案。
似乎 ssh-add -K〜/ .ssh / id_rsa
會加載您的密鑰,但每次重新啟動時都會要求輸入密碼。
我正在尋找一種不需要我在兩次登錄之間重新輸入密鑰密碼的解決方案。
在OSX上,本機 ssh-add
客戶端具有一個特殊參數,用於將私鑰的密碼保存在OSX鑰匙串中,這意味著您的常規登錄名將對其解鎖以供ssh使用。在OSX Sierra和更高版本上,您還需要將SSH配置為始終使用鑰匙串(請參見下面的步驟2)。
或者,您也可以使用不帶密碼的密鑰,但是如果您喜歡此工作流程肯定可以接受的安全性。
只需執行一次:
ssh-add -K〜/ .ssh / [您的私鑰]
輸入您的密鑰密碼,將不再要求您輸入密碼。
(如果您使用的是Sierra之前版本的OSX,則已經完成,不需要步驟2。)
似乎OSX Sierra消除了在兩次登錄之間保留密鑰的便利行為,默認情況下,對ssh的更新不再使用密鑰鏈。因此,升級後,每次重新啟動後,系統都會提示您輸入密鑰的密碼短語。
該解決方案非常簡單,並在此github線程註釋中進行了概述。設置方法如下:
確保已完成上述步驟1,將密鑰存儲在鑰匙串中。
如果尚未創建,請創建一個〜/ .ssh / config
文件。換句話說,在主目錄的 .ssh
目錄中,創建一個名為 config
的文件。
在該 .ssh / config
文件中,添加以下行:
主機*
UseKeychain是
AddKeysToAgent是
IdentityFile〜/ .ssh / id_rsa
將〜/ .ssh / id_rsa
更改為私鑰的實際文件名。如果您在〜.ssh
目錄中還有其他私鑰,請為每個私鑰添加一個 IdentityFile
行。例如,我還有另一行讀取 IdentityFile〜/ .ssh / id_ed25519
作為第二個私鑰。
Usecodechain yes 是關鍵部分,它告訴SSH在OSX鑰匙串中查找密鑰密碼。
就是這樣!下次加載任何ssh連接時,它將嘗試您指定的私鑰,並在OSX鑰匙串中查找其密碼短語。無需輸入密碼。
我遇到了類似的問題,因為每次都要求我提供發布密鑰密碼短語。根據上述用戶“ trisweb”的建議,我將這些選項設置為〜/ .ssh / config
:
主機*
UseKeychain是
AddKeysToAgent是
IdentityFile〜/ .ssh / id_rsa
但是每次我想使用ssh時仍然提示。最終,我打開了 ssh -v
並找到了以下調試行:
debug1:key_load_private:提供了不正確的密碼來解密私鑰
然後,我在“ Keychain Access.app”中打開我的鑰匙串,找到名為“ SSH:/Users/username/.ssh/id_rsa”的鑰匙並將其打開。我單擊“顯示密碼”以洩露密碼,並確實發現密鑰環中的密碼是舊密碼。我在“鑰匙串訪問”中更新了密碼短語,現在可以使用無密碼功能了。
我也可以用以下短語更新密碼:
ssh-keygen -p -f〜/ .ssh / id_rsa
對於上述所有無效的地方,我的問題似乎是因為我在所有ssh密鑰配置文件/快捷方式中都複製了 UseKeychain yes
& AddKeysToAgent yes
。我將我的〜/ .ssh / config
文件更新為僅聲明一次,現在它們都在登錄時加載,而無需在啟動時提示輸入密碼,例如:
主機*
UseKeychain是
AddKeysToAgent是
IdentityFile〜/ .ssh / foo
IdentityFile〜/ .ssh / bar
主機foo
主機名foo.com
用戶fooUser
IdentityFile〜/ .ssh / foo
主機欄
主機名bar.com
用戶欄用戶
IdentityFile〜/ .ssh / bar
此外,在macOS Sierra和HighSierra(不知道以前的版本)中,運行 ssh-add -A
將使代理加載所有密碼短語存儲在鑰匙串中的鑰匙...非常方便
在以下位置添加公共密鑰:
.ssh / known_hosts
公共密鑰通常位於:
/home/user/.ssh/id_rsa.pub
希望有幫助