我是否需要將我的私人 ssh 密鑰儲存在我的伺服器上,以便在 ssh 進入伺服器時進行 git 克隆儲存庫?

我是否需要將我的私人 ssh 密鑰儲存在我的伺服器上,以便在 ssh 進入伺服器時進行 git 克隆儲存庫?
  1. 我在本機上產生了 ssh 金鑰。

  2. 然後,我使用以下命令將我的公鑰複製到我的伺服器上:ssh-copy-id username@remote_host。一切都很順利。

  3. 我已確認我的本機~/.ssh/id_rsa.pub已複製到我的伺服器上,位址為my_user's_home_directory/.ssh/authorized_keys。裡面沒有其他文件。

  4. 我還將相同的公鑰複製到 Gitlab 中。

  5. 當我嘗試將git clone儲存庫儲存到伺服器時,我被告知:

[email protected]: Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
  1. 我可以輕鬆地透過 ssh 連接到我的伺服器。但由於我的伺服器不保存我的私鑰,所以對我來說,我無法 ssh git clone 是有道理的。這裡的正常程序是什麼?我可以進行常規 https 下載,這是標準路線嗎?

答案1

您可以使用ssh -A將 ssh 代理程式轉送到遠端主機,該主機將使用遠端伺服器上的本機金鑰,而無需傳送金鑰本身。

雖然這看起來是一個安全的選擇,但只能這樣做如果您絕對信任遠端伺服器(即預設情況下不啟用此功能)。轉送的 ssh-agent 可以由與您具有相同遠端使用者或具有 root 權限的任何人使用。

如果您決定這樣做,我建議您為代理程式新增金鑰,以便ssh-add -c在使用金鑰時提示您進行確認。

答案2

git 是去中心化的。可以從 Gitlab 取得到您的 PC,然後從您的 PC 推送到伺服器。 ssh 用戶端是您的 PC,因此您的私鑰或轉送代理程式不會接觸伺服器。

或者,可以有多個 ssh 金鑰。一份用於您的 PC,另一份用於伺服器。需要管理更多金鑰,但可以單獨監視和控制服務帳戶樣式。

或者,不要使用 git 作為部署工具。產生一個包或其他一些存檔,然後像安裝其他軟體一樣安裝它。

相關內容