首页 > 解决方案 > 无法使用 SSH 密钥从远程服务器访问 bitbucket 以对存储库中的最新代码执行 git pull

问题描述

我正在尝试使用 git pull 命令将 bitbucket 上的最新代码提取到开发(Ubuntu)服务器中。git pull 命令尝试通过 SSH 连接以 root 用户身份访问 bitbucket,但也要求提供与 SSH 相关的释义。Ubuntu 服务器上的 root/.ssh 文件夹包含 id_rsa 和 id_rsa.pub 文件,但我无法将 id_rsa.pub 中的公钥添加到 bitbucket,因为显然该密钥正在被其他人使用。我也不知道与这个 SSH 密钥有关的解释。所以几个问题:

  1. 当我无法将 SSH 公钥添加到 bitbucket 时,远程服务器如何通过 SSH 连接到 bitbucket 存储库?
  2. 我是否应该在 Ubuntu 服务器中创建一个新的 SSH 密钥并尝试将其(公钥部分)添加到 bitbucket,然后使用新密钥访问 bitbucket?
  3. 如果我在输入 git pull 命令后没有服务器不断提示我输入的解释,那么从存储库中提取代码的最佳方法是什么?以下是我能想到的一些,但感谢有关最佳方法的指导:

A)创建新的 SSH 密钥(有或没有释义,虽然我认为有释义更安全),将新的公钥添加到 bitbucket,然后尝试通过 SSH 从 bitbucket 中提取代码。我认为服务器仍会尝试以 root 用户身份访问 bitbucket,而不是我用来登录服务器的用户名。这当然需要我首先获得对 /root 和 /root/.ssh 文件夹的读写执行权限(在我的服务器上,我已经禁用了 root 用户的登录能力)。

B) 使用现有的 SSH 密钥(如上所述,我无法将其添加到 bitbucket)以其他用户身份访问 bitbucket(不是 root 用户,但可能是我用来登录 Ubuntu 服务器的用户名?)为了使用这种方法从 bitbucket 存储库中提取代码,我是否首先必须在 Ubuntu 服务器上的主目录 (/home/myusername/.ssh) 下设置 SSH 密钥?

标签: gitubuntu-16.04ssh-keys

解决方案


当我无法将 SSH 公钥添加到 bitbucket 时,远程服务器如何通过 SSH 连接到 bitbucket 存储库?

初始化与 Bitbucket 的连接时使用 SSH 握手协议,这涉及确定可以使用哪个密钥。在这种情况下,将尝试 root/.ssh 中的每个密钥,当 Bitbucket 接受一个密钥时,将建立一个连接(您可能有一个 root/.ssh/config 说明要使用哪个密钥,那么只有那个会使用)

SSH 密钥与 Bitbucket 上的单个帐户相关联(1-1 关系),并且当给定 SSH 密钥(来自握手过程)时,Bitbucket 知道要使用哪个帐户。显然,有人已经在使用这个密钥了。

我是否应该在 Ubuntu 服务器中创建一个新的 SSH 密钥并尝试将其(公钥部分)添加到 bitbucket,然后使用新密钥访问 bitbucket?

是的,您需要为 Bitbucket 上的每个帐户至少一个密钥,以便从您的开发服务器访问 Bitbucket。

如果我在输入 git pull 命令后没有服务器不断提示我输入的解释,那么从存储库中提取代码的最佳方法是什么?

目前尚不清楚您为什么使用 root 访问 Bitbucket,但如果可能的话,我将在我的主目录中拥有自己的密钥/home/myusername/.ssh(并在服务器上拥有自己的远程存储库克隆)。

如果 root 正在运行一些涉及从 Bitbucket 提取的任务,那么您可以为其创建一个单独的 Bitbucket 帐户并为该帐户使用单独的密钥。


推荐阅读