編輯:請參閱下面的答案,我的假設是錯誤的。
如果我的 SSH 設定中有以下內容(~/.ssh/config
在 OS X 上),這是否有安全風險?
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/my-secret-key.pem
我的理解是,我會將我的密鑰發送給我ssh
進入的任何主機。它是否正確?如果是,這是否有安全風險?理論上主機可以嘗試使用我的金鑰登入一些主要的 SSH 主機(如 GitHub)嗎?
如果我指定HostName
,我認為密鑰僅發送到該主機是否正確:
Host *
HostName github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/my-secret-key.pem
這為 GitHub 設定 SSH 的官方文檔似乎建議使用第一個設定...
答案1
SSH 可以不是將您的私鑰發送到伺服器。該機制基於使用實體擁有的內容進行計算 - 伺服器根據公鑰計算某些內容,客戶端根據私鑰計算某些內容(請參閱這個資訊安全堆疊交換帖子了解更多)。
在任何情況下,無論您是否將金鑰新增至代理,SSH 都會嘗試所有金鑰,直到其中一個成功為止。除非您有代理轉發設置,否則我認為無論如何都沒有什麼用伺服器能夠使用新增到代理程式的密鑰。
Host *
HostName github.com
AddKeysToAgent yes
這會將Hostname
every設定Host
為github.com
,這肯定不是您想要做的事情(這意味著ssh foo.bar
將連接到github.com
)。如果您只想將某些配置應用於 的連接github.com
,請使用它作為Host
模式:
Host github.com
IdentityFile ~/.ssh/my-secret-key.pem
是否存在安全風險取決於您要防禦的對像是誰。如果您的 SSH 金鑰受密碼保護,並且其他人能夠存取您系統上的 SSH 代理,當然,一旦將所有受密碼保護的金鑰新增至代理中,就會開啟這些金鑰進行存取。
但我想說這種威脅不太可能發生。