首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置ssh键以在不同用户下从一台计算机访问github

问如何设置ssh键以在不同用户下从一台计算机访问github
EN

Stack Overflow用户
提问于 2020-02-11 05:42:58
回答 3查看 1.1K关注 0票数 4

我有两个用户的Ubuntu服务器

代码语言:javascript
复制
root #root account of the system
myuser #user added to sudo group 

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

代码语言:javascript
复制
/root/.ssh 
         |__ id_rsa
         |__ id_rsa.pub

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

代码语言:javascript
复制
eval "$(ssh-agent -s)"

而不是把我的私钥加进去

代码语言:javascript
复制
ssh-add .ssh/id_rsa

它是正确的添加比我添加我的公钥到github回购。

之后,我切换到我的sudo用户,将id_rsa和id_rsa.pub复制到sudo用户主目录/home/myuser/.ssh/,并尝试访问repo,它是在根帐户和系统下配置的,提示我没有访问它。我不明白为什么会这样。有谁能引导我正确设置两个系统用户使用相同的私钥访问github repo?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-11 06:51:54

首先,如果可能的话,不要以根的形式生成或做任何事情。根应该仅用于系统任务。

其次,如果您将一个密码保护的SSH密钥添加到作为root用户运行的ssh-gent中,那么当您在sudo user中使用相同的SSH密钥时,用户可能无法访问所述代理。

尝试并使用eval "$(ssh-agent -s)"运行sudo user,以便以user的形式运行代理。

但更普遍的情况是,所有序列都应该直接作为一个本地帐户user来执行。

复制私用SSH密钥不是一个好做法。

我有一个帐户,并希望将其设置为在两个linux用户下使用相同的github帐户。

然后:

  • 在本地帐户用户user1下,生成ssh键: -t rsa -P "“-m PEM

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

  • 在本地帐户用户user2下,生成ssh键: -t rsa -P "“-m PEM

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

将两个SSH公钥添加到您唯一的GitHub帐户:参见"向GitHub帐户添加新的SSH密钥“。

你可以添加多少你想要的钥匙。

然后,您将能够从本地user1或user2中作为该SSH帐户进行身份验证,每个帐户都使用自己的SSH密钥(不需要跨本地帐户共享私有SSH密钥)。

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

票数 3
EN

Stack Overflow用户

发布于 2020-02-11 15:47:19

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

  • 根据Vonc的建议,删除root用户下面的所有git ssh键
  • 而不是在sudo用户下生成新的ssh密钥对。而不是将其添加到ssh-agent中,并将发布密钥添加到github帐户中。
  • 而不是重复上一步中的所有步骤。

现在,我的服务器上有两个sudo用户,每个用户的ssh密钥对都在各自的/home/{USER}/.ssh目录中,每个用户的pub密钥都添加到github帐户中。工作也很好。感谢大家帮助我们找到解决方案

票数 1
EN

Stack Overflow用户

发布于 2020-02-11 07:21:17

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

创建SSH配置文件

当您有多个标识文件时,创建一个SSH配置文件机制来为您的各种身份创建别名。 您可以使用许多参数和不同的方法构造SSH配置文件。 本例中使用的别名条目的格式是: 主机别名HostName github.com IdentityFile ~/..ssh/identity 要为两个标识(workid和personalid)创建一个配置文件,您可以执行以下操作:

代码语言:javascript
复制
Open a terminal window.
Edit the ~/.ssh/config file. 

如果您没有配置文件,请创建一个配置文件。

为每个标识组合添加别名,例如:

代码语言:javascript
复制
Host workid
HostName github.com 
IdentityFile ~/.ssh/workid

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

重要信息:

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60162669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档