題:
如何將SSH私鑰永久添加到“鑰匙串”,以便ssh自動可用?
sorin
2012-04-13 18:13:49 UTC
view on stackexchange narkive permalink

似乎 ssh-add -K〜/ .ssh / id_rsa 會加載您的密鑰,但每次重新啟動時都會要求輸入密碼。

我正在尋找一種不需要我在兩次登錄之間重新輸入密鑰密碼的解決方案。

您能否再多說幾句密碼提示?我問是因為我有一個用於遠程服務器的ssh密鑰,我保證您與我的Mac登錄密碼或任何其他密碼都不相同,並且我*年來*都不必輸入ssh密鑰的密碼。我可以打開一個終端,輸入“ ssh ”,然後我就在那裡。我想我首先在OSX 10.5下設置了此密鑰。 id_dsa,但我認為這無關緊要。
我的`id_rsa`密鑰上有密碼。
我還有一個問題,我很久以前解決了這個問題,以至於我不記得自己到底做了什麼。但是我想這個想法是不運行`ssh-add`,而是直接運行`ssh`。您應該會彈出一個窗口,該窗口將作為密鑰的密碼短語,並帶有一個複選框,供您將其存儲在鑰匙串中。
@Sorin-我的也是!很久以前,我不得不輸入一次,而Mac從此為我保存了它。希望Harald的建議會有所幫助。
您是指鑰匙串密碼(即您的登錄密碼)還是鑰匙的密碼?如果是後者,您的密碼短語是否肯定存儲在鑰匙串中?您可以通過打開“鑰匙串訪問”並在登錄鑰匙串中查找它來進行檢查。
** ssh-Authorized_keys HOWTO ** http://www.eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html
我做這些來解決它,請參考:https://unix.stackexchange.com/a/560404/388990希望它能工作,謝謝
我做這些來解決它,請參考:https://unix.stackexchange.com/a/560404/388990希望它能工作,謝謝
五 答案:
trisweb
2016-08-26 06:06:40 UTC
view on stackexchange narkive permalink

在OSX上,本機 ssh-add 客戶端具有一個特殊參數,用於將私鑰的密碼保存在OSX鑰匙串中,這意味著您的常規登錄名將對其解鎖以供ssh使用。在OSX Sierra和更高版本上,您還需要將SSH配置為始終使用鑰匙串(請參見下面的步驟2)。

或者,您也可以使用不帶密碼的密鑰,但是如果您喜歡此工作流程肯定可以接受的安全性。

步驟1-將密鑰存儲在鑰匙串中

只需執行一次:

  ssh-add -K〜/ .ssh / [您的私鑰]
 

輸入您的密鑰密碼,將不再要求您輸入密碼。

(如果您使用的是Sierra之前版本的OSX,則已經完成,不需要步驟2。)

步驟2-將SSH配置為始終使用鑰匙串

似乎OSX Sierra消除了在兩次登錄之間保留密鑰的便利行為,默認情況下,對ssh的更新不再使用密鑰鏈。因此,升級後,每次重新啟動後,系統都會提示您輸入密鑰的密碼短語。

該解決方案非常簡單,並在此github線程註釋中進行了概述。設置方法如下:

  1. 確保已完成上述步驟1,將密鑰存儲在鑰匙串中。

  2. 如果尚未創建,請創建一個〜/ .ssh / config 文件。換句話說,在主目錄的 .ssh 目錄中,創建一個名為 config 的文件。

  3. 在該 .ssh / config 文件中,添加以下行:

     主機*
      UseKeychain是
      AddKeysToAgent是
      IdentityFile〜/ .ssh / id_rsa
     

    〜/ .ssh / id_rsa 更改為私鑰的實際文件名。如果您在〜.ssh 目錄中還有其他私鑰,請為每個私鑰添加一個 IdentityFile 行。例如,我還有另一行讀取 IdentityFile〜/ .ssh / id_ed25519 作為第二個私鑰。

    Usecodechain yes 是關鍵部分,它告訴SSH在OSX鑰匙串中查找密鑰密碼。

  4. 就是這樣!下次加載任何ssh連接時,它將嘗試您指定的私鑰,並在OSX鑰匙串中查找其密碼短語。無需輸入密碼。

  5. ol>
這幾乎對我有用。我的“登錄”鑰匙串已經禁用了自動鎖定,因此Matthew Sanabria的答案不適用。使用`ssh-add -K ...`將密鑰添加到ssh代理中,而不提示輸入密碼,而僅提示當前會話。重新啟動後,我不得不重新發出命令。
我以某種方式執行ssh-add -K,它工作了一段時間,然後突然開始提示我再次輸入密碼。不知道這是否與iterm或我的zsh更新有關?
@Poulsbo和@Abram-查看我的更新,Sierra更改了自動行為,現在您必須手動運行`ssh-add -A`來加載保存的鑰匙串。上面引用了一些可能的解決方案。
@trisweb感謝您的提示。joshbuchea修改.ssh / config文件的解決方案看起來很有希望!參見https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-270242512
@trisweb檢查先前的評論,我認為這可能是一個不錯的解決方法,因為它需要在bash登錄中運行`ssh-add`,特別是因為並非所有人都在使用bash shell。確認有效後,請更新答案。
@sorin會看到更新後的答案,如果您有任何反饋意見,請告訴我。謝謝!
編輯'config'在MacOS上效果很好,但是在Linux下(錯誤的配置選項:UseKeychain)失敗。有沒有一種方法可以寫一個對兩個都適用的配置文件?
很棒!在我的情況下,除了`K`之外,我還需要使用`A`標誌將我的鑰匙添加到鑰匙串中並在其中註冊密碼(`ssh-add -AK〜/ .ssh / [your-private-鍵]`)。謝謝!
@wcochran我也遇到了這個問題。這確實使計劃在各個平台上保持點文件通用成為了難題。
需要記住的一件事:它不在OpenSSH上游,*僅*在Apple [Mm] acOS(X)版本中。 其他地方有如何獲得/ usr / bin / ssh-add自動添加密鑰的方法,以便/ usr / local / bin / ssh(通過brew等通過OpenSSH使用)可以使用用戶代理
在macOS 10.13.2上收到消息:“錯誤的配置選項:usekeychain”。
@wcochran和@ctt-在Apple的技術說明中[macOS 10.12.2中的OpenSSH更新](https://developer.apple.com/library/content/technotes/tn2449/_index.html#//apple_ref/doc/uid/DTS40017589),他們建議使用“ IgnoreUnknown UseKeychain”來實現交叉兼容性。
即使使用usekeychain選項,我仍然發現我的鑰匙串將在重新啟動時刪除.ssh / id_rsa密鑰。
我做的完全一樣,我的Mac仍然在重啟時丟失了密鑰。
新Mac-沒有A或K標誌,每次我重新啟動時仍然需要做
遺憾的是,該答案不再有效,沒有其他選項K
@Matteo-再次檢查您使用的是Apple版本的ssh-add嗎?如果您已安裝Homebrew或其他SSH,則可能會覆蓋它。使用which which ssh-add找出哪一個;Apple版本位於`/ usr / bin / ssh-add`。如果是這種情況,請確保`/ usr / bin`在$ PATH中具有優先級。
@trisweb只需檢查一下Apple發行說明,它們與世界其他地方保持一致,就不再有K或A選項
@Matteo我已經安裝了Catalina,並且ssh-add -K選項仍然存在並且可以正常工作。仔細檢查您使用的是正確的“ ssh-add”,還是您的環境是否有其他差異。
@triswed很好,我不打算僅僅為了擁有這樣的機會就切換到卡塔琳娜州
@Matteo,它也出現在Catalina之前的所有MacOS版本上;它繼續存在於卡塔琳娜州。別擔心。
我可以確認這在卡塔利娜州仍然有效。如果使用默認密鑰名稱,則“ IdentityFile”不是嚴格要求的。
user2688272
2017-12-19 23:24:36 UTC
view on stackexchange narkive permalink

我遇到了類似的問題,因為每次都要求我提供發布密鑰密碼短語。根據上述用戶“ 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
 
在我的Mac中,密碼保存在“ iCloud”鏈的“密碼”類別中。我以為是在“登錄”鏈中。
Avolition
2018-08-13 07:07:57 UTC
view on stackexchange narkive permalink

對於上述所有無效的地方,我的問題似乎是因為我在所有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
 
我建議遵循特定主機規則的`Host *`。有關詳細信息,請參見`man ssh_config`。
JJarava
2018-04-05 13:40:32 UTC
view on stackexchange narkive permalink

此外,在macOS Sierra和HighSierra(不知道以前的版本)中,運行 ssh-add -A 將使代理加載所有密碼短語存儲在鑰匙串中的鑰匙...非常方便

lluisi
2012-04-20 16:04:57 UTC
view on stackexchange narkive permalink

在以下位置添加公共密鑰:

  .ssh / known_hosts  

公共密鑰通常位於:

  /home/user/.ssh/id_rsa.pub 

希望有幫助

我認為是“ authorized_keys”
無論如何,如果您有多個按鍵,這將不起作用!


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...