我是否需要将我的私人 ssh 密钥存储在我的服务器上,以便在 ssh 进入服务器时 git clone repos?

我是否需要将我的私人 ssh 密钥存储在我的服务器上,以便在 ssh 进入服务器时 git clone repos?
  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 clonerepo 上传到服务器时,系统提示我:

[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 -Assh-agent 转发到远程主机,远程主机将使用来自远程服务器的本地密钥,而无需发送密钥本身。

虽然这似乎是一个安全的选择,但只能这样做如果你绝对信任远程服务器(即默认情况下不启用此功能)。转发的 ssh-agent 可由与您拥有相同远程用户或具有 root 权限的任何人使用。

如果您决定这样做,我建议向代理添加密钥,以便ssh-add -c在使用密钥时提示您确认。

答案2

git 是去中心化的。可以从 Gitlab 获取数据到您的 PC,然后从您的 PC 推送到服务器。ssh 客户端是您的 PC,因此您的私钥或转发代理不会接触服务器。

或者,可以有多个 ssh 密钥。一个用于您的 PC,另一个用于服务器。需要管理更多密钥,但可以单独监控和控制,服务帐户风格。

或者,不要使用 git 作为部署工具。生成一个包或其他存档,然后像安装其他软件一样安装它。

相关内容