我在本機上產生了 ssh 金鑰。
然後,我使用以下命令將我的公鑰複製到我的伺服器上:
ssh-copy-id username@remote_host
。一切都很順利。我已確認我的本機
~/.ssh/id_rsa.pub
已複製到我的伺服器上,位址為my_user's_home_directory/.ssh/authorized_keys
。裡面沒有其他文件。我還將相同的公鑰複製到 Gitlab 中。
當我嘗試將
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.
- 我可以輕鬆地透過 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 作為部署工具。產生一個包或其他一些存檔,然後像安裝其他軟體一樣安裝它。