預設情況下,ssh-copy-id -i blah.pub user@host 是使用-i指定的公鑰的私鑰形式登錄,還是使用~/.ssh/id_rsa登入?

預設情況下,ssh-copy-id -i blah.pub user@host 是使用-i指定的公鑰的私鑰形式登錄,還是使用~/.ssh/id_rsa登入?

ssh-copy-id -i blah.pub user@host用-i指定的私鑰的公鑰形式登錄,還是用 登入~/.ssh/id_rsa? ”

如果答案是使用 ~/.ssh/id_rsa, / SSH 預設使用的金鑰登錄,而不是使用 -i 指定的公鑰的私鑰形式登錄,為什麼這裡會出錯呢?

我有一個私鑰和公鑰對, rodney 和 rodney.pub 如果我將文件 rodney 重命名為 roddney,然後我執行 ssh-copy-id -i ./rodney.pub user@ip 我希望它能夠登錄並儘管我收到錯誤“錯誤:無法打開ID 文件'./rodney':沒有這樣的文件”,但仍執行其附加操作。如果我將 roddney 重新命名為 rodney,那麼我就不會收到該錯誤。如果 ssh-copy-id 所做的只是 ssh(預設使用 id_rsa 登入),然後複製 rodney.pub 的話,為什麼 ssh-copy-id 需要或關心私鑰 rodney?

答案1

ssh-copy-id -i blah.pub user@host,是使用-i指定的公鑰的私鑰形式登錄,還是使用~/.ssh/id_rsa登入?

它不會使用 -i 指定的公鑰的私鑰形式登入。

它使用 ssh 預設使用的密鑰登入。 ~/.ssh/id_rsa,(儘管如果 ssh-agent 正在運行,那麼 ssh 可能會嘗試其他密鑰,但無論哪種方式..它都不會使用 -i 指定的公鑰的私鑰形式登錄)。我們假設您沒有運行 ssh-agent,我認為這也是問題中的假設。

如果答案是使用 ~/.ssh/id_rsa, / SSH 預設使用的金鑰登錄,而不是使用 -i 指定的公鑰的私鑰形式登錄,為什麼這裡會出錯呢?

我有一個私鑰和公鑰對, rodney 和 rodney.pub 如果我將文件 rodney 重命名為 roddney,然後我執行 ssh-copy-id -i ./rodney.pub user@ip 我希望它能夠登錄並儘管我收到錯誤“錯誤:無法打開ID 文件'./rodney':沒有這樣的文件”,但仍執行其附加操作。如果我將 roddney 重新命名為 rodney,那麼我就不會收到該錯誤。如果 ssh-copy-id 所做的只是 ssh(預設使用 id_rsa 登入),然後複製 rodney.pub 的話,為什麼 ssh-copy-id 需要或關心私鑰 rodney?

不久前我和一位 ssh 專家討論過這個問題。

我的用例是我有一台筆記型電腦和一些 VPS,我想要一個 VPS 透過 SSH/SFTP 連接到所有其他 VPS。我的筆記型電腦已經可以透過 SSH 存取所有 VPS。

我可以做的是在筆記型電腦上產生金鑰對,然後將公鑰 ssh-copy-id 到所有 VPS。然後將我從筆記型電腦產生的私鑰移動或複製到第一個 VPS 上。

但我所做的(這導致了一個令我困惑並讓我詢問的錯誤),我在筆記型電腦上產生了金鑰對,我將產生的私鑰從筆記型電腦複製到了第一個 VPS。然後,我從筆記型電腦中刪除了該私鑰,因為我認為(錯誤地)我不再需要在筆記型電腦上使用它。因為(我實際上正確地認為)ssh-copy-id 不會使用它來登入我的任何 VPS。所以我這樣做了ssh-copy-id -i blah.pub user@IPofFirstVPS ,但出現了錯誤。

ssh-copy-id 確實需要金鑰對,因此,私鑰和公鑰都需要。

因此,如果您這樣做,ssh-copy-id -i blah.pub user@host 那麼它需要指定的公鑰檔案的私鑰形式。

如果您要這樣做,ssh-copy-id blah那麼它會將 .pub 寫入檔案名稱並執行 .pub 操作 ssh-copy-id blah.pub。因此,不妨將 .pub 放在其末尾,即指定公鑰檔案名稱而不是私鑰檔案名稱。

但它需要私鑰只是一個「安全檢查」。從某種意義上說,這只是它在執行任務之前所做的測試,將公鑰附加到遠端authorized_keys 檔案中。理論上,它甚至不需要進行該檢查即可進行登入和附加。

它預期/猜測,並且可能猜測錯誤,將來您可能會使用您指定的公共 ID 的私鑰形式,從執行 ssh-copy-id 的那台電腦通過 SSH 連接到遠端主機,因此您將需要運行ssh -copy-id 的電腦上使用該私鑰! (它不認為哦,也許您產生金鑰對的目的是在其他機器上使用該私鑰,但只是在您所在的機器上使用 ssh-copy-id,因為該機器可以透過 ssh 存取許多您的其他機器)。

ssh-copy-id 不使用公鑰對的私鑰形式登入。

ssh-copy-id 有一個選項 -o,您可以在其中指定用於登入的私鑰。

我沒有設定 ssh-agent,因此我的 ssh 使用私鑰 ~/.ssh/id_rsa 連接,這就是 ssh-copy-id 將使用 -i 中指定的任何公鑰登入的私鑰。但它仍然會檢查 -i 中指定的公鑰的私鑰檔案名稱是否存在!

ssh-copy-id 是一個腳本,例如它甚至以 開頭,#!/bin/sh因此熟悉腳本的人甚至可以 cat/vim 它並檢查和查看。

相關內容