【问题标题】:How to setup ssh keys to acces github from one machine under different users如何设置 ssh 密钥以从不同用户下的一台机器访问 github
【发布时间】:2020-05-26 11:53:40
【问题描述】:

我有两个用户的 Ubuntu 服务器

root #root account of the system
myuser #user added to sudo group 

在 root 用户下,我生成了 ssh 密钥并添加到其中。 ssh目录

/root/.ssh 
         |__ id_rsa
         |__ id_rsa.pub

之后我在同一个 root 用户下运行 ssh-agent

eval "$(ssh-agent -s)"

比添加我的私钥给它

ssh-add .ssh/id_rsa

它被正确添加,而不是我将我的公钥添加到 github 存储库。

之后,我切换到我的 sudo 用户,将 id_rsaid_rsa.pub 复制到我的 sudo 用户主目录 /home/myuser/.ssh/ 并尝试访问在 root 帐户下配置的 repo,系统提示我无法访问它。我不明白为什么会这样。谁能指导我正确设置两个系统用户通过相同的私钥访问 github repo

【问题讨论】:

  • 您可以复制id_rsa 或使用root 的密钥连接并将该密钥也放在服务器上。
  • @dan1st 我这样做了,所以我忘了提及它。我编辑了我的问题
  • 您是否也复制了id_rsa.pub?您是否更新了这些文件的权限?
  • @dan1st 是的,我也添加了 id_rsa.pub。 sudo 用户下的文件权限?
  • 是的,其他用户是否有权查看这些文件?文件的所有者是 root 用户吗?

标签: git ubuntu


【解决方案1】:

首先,如果可能,不要以 root 身份生成或执行任何操作。 root 应该只用于系统任务。

其次,如果您将受密码保护的 SSH 密钥添加到以 root 身份运行的 ssh-gent 中,则一旦您使用与 sudo user 相同的 SSH 密钥,用户可能无法访问该代理。
尝试使用sudo user 运行eval "$(ssh-agent -s)",以便以user 运行代理。

但更一般地说,所有序列都应直接作为一个本地帐户user 完成。
复制 private SSH 密钥并不是一个好习惯。

我有一个账号,想设置两个linux用户下使用同一个github账号

然后:

  • 在本地账号用户user1下,生成ssh key:

    ssh-keygen -t rsa -P "" -m PEM
    

(默认为~user1/.ssh/id_rsa/id_rsa.pub

  • 在本地账号用户user2下,生成ssh key:

    ssh-keygen -t rsa -P "" -m PEM
    

(默认为~user2/.ssh/id_rsa/id_rsa.pub

两个 SSH 公钥添加到您的唯一 GitHub 帐户:请参阅“Adding a new SSH key to your GitHub account”。
您可以添加任意数量的密钥。

然后,您将能够从本地 user1user2 以该 GitHub 帐户身份进行身份验证,每个帐户都使用自己的 SSH 密钥(无需在本地帐户之间共享 私人 SSH 密钥)。

在这种情况下不需要~/.ssh/config

【讨论】:

  • 感谢您提供有关使用 root 的好建议。如何检查 ssh 密钥是否使用密码生成?
  • 您还有用来生成那些 SSH 密钥的命令吗?一种更简单的测试方法是直接以用户身份生成,无需密码:sudo user ssh-keygen -t rsa -P "" -m PEM
  • 为什么你说'复制私有 ssh 密钥不是好的做法',正如我在 github 中理解的那样,我只能添加一个 ssh pub 密钥
  • @НаглыйСпамер 您可以根据需要生成任意数量的 ssh 密钥,请参阅 stackoverflow.com/a/12066973/6309
  • @НаглыйСпамер 我已经编辑了答案以说明如何。关键点:忘记root。你不需要root。我展示了如何使用这些“别名”。
【解决方案2】:

我通过以下步骤解决了问题。 •

  • 删除了根目录下的所有 git ssh 密钥 Vonc 建议的用户

  • 比在 sudo 用户下生成新的 ssh 密钥对。然后将其添加到 ssh-agent 并将 pub key 添加到 github 帐户

  • 比重复上一步的所有步骤

现在我的服务器上有两个 sudo 用户,每个用户在他们的 /home/{USER}/.ssh 目录中都有他们的 ssh 密钥对,每个 Linux 用户的 pub 密钥都添加到 github 帐户。它工作正常。感谢所有帮助找到解决方案的人

【讨论】:

    【解决方案3】:

    最简单的方法是创建 ssh 配置文件

    创建一个 SSH 配置文件

    当您有多个身份文件时,请创建一个 SSH 配置文件机制来为您的各种身份创建别名。

    您可以使用许多参数和不同的方法来构建 SSH 配置文件。

    此示例中使用的别名条目的格式为:

    Host alias 
      HostName github.com 
      IdentityFile ~/.ssh/identity
    

    要为两个身份(workid 和 personalid)创建配置文件,您需要执行以下操作:

    Open a terminal window.
    Edit the ~/.ssh/config file. 
    

    如果您没有配置文件,请创建一个。
    为每个身份组合添加别名,例如:

    Host workid
    HostName github.com 
    IdentityFile ~/.ssh/workid
    
    Host personalid
    HostName github.com 
    IdentityFile ~/.ssh/personalid
    

    重要:

    不要忘记将密钥加载到您的 GitHub 帐户。

    【讨论】:

    • 据我所知,ssh 配置中的重要内容是alias 我有几个 ssh 密钥对。首先用于访问我的服务器,其次是用于访问 github 的 ssh 密钥。我应该如何为提到的实体配置别名?
    猜你喜欢
    • 2023-03-07
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2019-09-30
    • 2020-09-13
    相关资源
    最近更新 更多