LiangRongfu / Blog

一篇博文的的重点是让自己对知识点进行梳理和沉淀
1 stars 0 forks source link

ssh多账号设置 #5

Open LiangRongfu opened 2 years ago

LiangRongfu commented 2 years ago

有时,您需要多个帐户才能访问 Github 或 Gitlab 以及类似工具。例如,您可以在家里为您的项目拥有一个帐户,为您的公司拥有第二个帐户。

案例 1:Github 上的多个帐户 创建不同名称的 SSH 密钥

$ ssh-keygen -t rsa -C "your_name@home_email.com"

当你看到这条消息

Generating public/private rsa key pair. 
Enter file in which to save the key (/home/user_name/.ssh/id_rsa):

输入唯一名称,例如:

id_rsa_home

接下来,系统会要求您输入密码。

因此,您已经为您的家庭帐户创建了 SSH 密钥,现在您可以为您的公司帐户生成 SSH 密钥。

使用第二封邮件再次调用 SSH 密钥生成器。

$ ssh-keygen -t rsa -C "your_name@company_email.com"

输入文件名

id_rsa_company

完成所有步骤后,您可以检查是否已创建所有密钥。

$ ls ~/.ssh

您应该会看到类似的文件列表:

id_rsa_home  id_rsa_company  id_rsa_home.pub  id_rsa_company.pub

现在您需要一个配置文件来组织这些键。

$ cd ~/.ssh/
$ touch config
$ nano config

添加到配置文件中:

# Home account
Host home.github.com
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_home

# Company account
Host company.github.com
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_company

接下来,您将删除缓存的键

$ ssh-add -D

如果您看到一条消息

Could not open a connection to your authentication agent.

然后输入:

eval `ssh-agent -s`

并重试上一个命令。

接下来,您可以检查您的密钥是否已添加:

$ ssh-add -l
2048 d4:e0:39:e1:bf:6f:e3:26:14:6b:26:73:4e:b4:53:83 /home/user/.ssh/id_rsa_home (RSA)
2048 7a:32:06:3f:3d:6c:f4:a1:d4:65:13:64:a4:ed:1d:63 /home/mateusz/.ssh/id_rsa_company (RSA)

如果您没有任何条目,那么您应该添加您的密钥

ssh-add ~/.ssh/id_rsa_company
ssh-add ~/.ssh/id_rsa_home

现在您可以检查连接(需要提前在平台上配置好公钥)

$ ssh -T git@home.github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@work.github.com
Hi company_user! You've successfully authenticated, but GitHub does not provide shell access.

笔记!检查此提示的最后一段。

案例 2:Github 和 Gitlab 上的账号 这与之前的情况非常相似。我不会一步一步地描述它,因为所有的步骤都是一样的。我将只添加示例配置文件。

例如,您在 gitlab 上拥有自己的家庭作业帐户和公司帐户。

 # GITLAB
 Host gitlab.company_url.com
    HostName gitlab.company_url.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_company

 # GITHUB
 Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_home

测试连接

$ ssh -T git@gitlab.company_url.com
Welcome to GitLab, CompanyUser!
$ ssh -T git@github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.

您可能已经看到,不需要主机名前缀。

您可能需要为任何项目设置 git config 用户详细信息。 需要区分您的帐户。

$ cd ~/home_project
$ git config user.name "home_user"
$ git config user.email "your_name@home_email.com"