Git 配置SSH,多个 Github 账号配置不同的SSH KEY

这篇具有很好参考价值的文章主要介绍了Git 配置SSH,多个 Github 账号配置不同的SSH KEY。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

首先做个说明

  1. 生成一对默认的私钥公钥,私钥自己客户端留着用,公钥可以给多个平台用。
  2. 多对私钥公钥,主要是应对一个平台多个账号的情况。当然你想每个平台使用不同的私钥公钥也是可以的。
  3. 多次生成私钥公钥需要自己重新命名,否则会覆盖之前的。

git 添加多个key,Git 使用教程,github,ssh,macos

Git 配置 SSH

一、查看是否已经生成过/是否应存在了私钥公钥

进入 用户/.ssh 目录

$ cd ~/.ssh

如果找不到目录或者目录中没有东西,证明以前没有生成过。

或者直接使用命令来查看

$ ls -al ~/.ssh
# Lists the files in your .ssh directory, if they exist

检查目录列表,看看您是否已经拥有公共SSH密钥。默认情况下,GitHub受支持的公钥的文件名如下之一。

id_rsa.pub
id_ecdsa.pub
id_ed25519.pub

提示:如果您收到~/.ssh不存在的错误,则在默认位置没有现有的SSH密钥对。您可以在下一步创建新的SSH密钥对。

二、生成密钥对(私钥公钥)

两种方式,一种是生成的时候直接添加好路径;另一种是不带路径,需要第二步添加路径或使用默认路径。

ssh key命名的第一种方式:
$ ssh-keygen -t rsa -C "youremail@yourcompany.com" -f ~/.ssh/id_rsa_github

代码参数含义:
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。

ssh key命名的第二种方式:
$ ssh-keygen -t rsa -C "youremail@xxx.com"

以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码。

按回车后:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): id_rsa_github(取个名字)
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in 
id_rsa_github.
Your public key has been saved in 
id_rsa_github.pub.

最好每次生成时都给SSH Key取个名字,这样后面在管理时自己也一目了然。我这里的格式是id_rsa_项目名_git提供方,我生成的所有key都遵循这个规则命名。建议你也有你自己的一种命名方式,并且保持统一。如果不取名字,默认的是id_rsa,如果后面生成时不命名,会把这个覆盖掉。密码可以不设置,免得每次提交时还要输入一次,安全性自己衡量吧。第一次生成key时,会在~目录下创建一个.ssh目录。

附:
键入ssh-keygen -t,然后是键类型和可选注释。此注释包含在创建的.pub文件中。您可能想使用电子邮件地址进行注释区分。

例如,对于ED25519:

ssh-keygen -t ed25519 -C "<comment>"

对于2048位RSA:

ssh-keygen -t rsa -b 2048 -C "<comment>"
https://docs.gitlab.com/ee/ssh/#add-an-ssh-key-to-your-gitlab-account

三、将SSH密钥添加到ssh代理中

ssh服务器默认是去找id_rsa,现在需要把这个key添加到ssh-agent中,这样ssh服务器才能认识id_rsa_TestSSH_github。

  • 在后台启动ssh-agent。
$ eval $(ssh-agent -s)
> Agent pid 59566

根据您的环境,您可能需要使用其他命令。例如,在启动ssh-agent之前,您可能需要通过运行sudo -s -H来使用root访问,或者您可能需要使用exec ssh-agent bashexec ssh-agent zsh来运行ssh-agent。

  • 如果您使用的是macOS Sierra 10.12.2或更高版本,则需要修改~/.ssh/config文件,以自动将密钥加载到ssh代理中,并将密码存储在钥匙串中。

多个Github账号配置不同的 ssh

  1. 首先,检查您的~/.ssh/config文件是否存在于默认位置。
$ open ~/.ssh/config
> The file /Users/you/.ssh/config does not exist.
  1. 如果文件不存在,请创建文件。
$ touch ~/.ssh/config

打开您的~/.ssh/config文件,然后修改文件以包含以下行。如果您的SSH密钥文件的名称或路径与示例代码不同,请修改文件名或路径以匹配当前设置。

Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa_github

注意:如果您选择不向密钥添加密码,则应省略UseKeychain行。

注意:如果您看到这样的错误
/Users/USER/.ssh/config: line 16: Bad configuration option: usekeychain
Host *部分添加额外的配置行:
Host *
IgnoreUnknown UseKeychain

**注意:**关于config文件,同时参考下列文件

将不同账号的工程图服务器与ssh-key关联

# 添加config配置文件
# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径

#thub user(first@email.com)
Host github1
 HostName git.some.com/
 User git
 IdentityFile /Users/xxx/.ssh/id_rsa

# second user(second@email.com)
 # 建一个github别名,新建的帐号使用这个别名做克隆和更新
Host github2
 HostName github.com
 User git
 IdentityFile /Users/xxx/.ssh/id_ras_bill_github

另一个例子

#
# Main gitlab.com server
#
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/my-ssh-key-directory/my-gitlab-private-key-filename
User mygitlabusername

另一个例子

#
# Our company's internal GitLab server
#
Host my-gitlab.company.com
RSAAuthentication yes
IdentityFile ~/my-ssh-key-directory/company-com-private-key-filename

另一个例子

# GitLab.com
Host gitlab.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/gitlab_com_rsa

# Private GitLab instance
Host gitlab.company.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/example_com_rsa

另一个例子

# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

首先,检查您的~/.ssh/config文件是否存在于默认位置。

$ open ~/.ssh/config
> The file /Users/you/.ssh/config does not exist.
  • 将您的SSH私钥添加到ssh代理中,并将密码存储在钥匙串中。如果您使用其他名称创建了密钥,或者如果您正在添加具有不同名称的现有密钥,请将命令中的id_rsa_github替换为私钥文件的名称。
$ ssh-add ~/.ssh/id_rsa_github

ssh-add <directory to private SSH key>
如果执行ssh-add时提示"Could not open a connection to your authentication agent",可以现执行命令:

$ ssh-agent bash

然后再运行ssh-add命令。

  • 查看添加结果
ssh-add -l

补充:

# 可以通过 ssh-add -l 来确私钥列表
$ ssh-add -l
# 可以通过 ssh-add -D 来清空私钥列表
$ ssh-add -D

一、将公钥粘贴到git服务器平台上,如GitHub

当然可以直接打开刚生成的公钥文件id_rsa_github.pub文件,复制全部内容去平台Add SSH Key;也可以使用命令复制公钥文件内容贴到平台 Add SSH Key。

  • 附:使用命令复制
    将SSH公钥复制到剪贴板上
$ pbcopy < ~/.ssh/id_rsa_github.pub
# Copies the contents of the id_rsa_github.pub file to your clipboard

提示:如果pbcopy不起作用,您可以找到隐藏的.ssh文件夹,在您最喜欢的文本编辑器中打开文件,并将其复制到剪贴板。

其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。
这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如github2,那么原地址是:git@github.com:username/Mywork.git,替换后应该是:github2:username/Mywork.git

二、测试连接

测试一下

$ ssh -T github2
Hi 0xJoker! You've successfully authenticated, but GitHub does not provide shell
  • 输入以下命令测试
$ ssh -T git@github.com
# Attempts to ssh to GitHub

您可能会看到这样的警告:

> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
> Are you sure you want to continue connecting (yes/no)?
  • 验证您看到的消息中的指纹是否与GitHub的RSA公钥指纹匹配。如果是这样,则键入yes
> Hi username! You've successfully authenticated, but GitHub does not
> provide shell access.

您可能会看到以下错误信息:

...
Agent admitted failure to sign using the key.
debug1: No more authentication methods to try.
Permission denied (publickey).

这是某些Linux发行版的已知问题。有关更多信息,请参阅“错误:代理承认未能签名”。

  • 验证生成的消息是否包含您的用户名。如果您收到“permission denied【权限被拒绝】”消息,请参阅“Error: Permission denied (publickey)【错误:权限被拒绝(公钥)”】。

三、常见问题处理

经常与会遇到下面这种情况,我也很纳闷,每次都解析到不到域名和地址

ssh: Could not resolve hostname git.oschina.net: 
nodename nor servname provided, or not known

查资料之后的解决办法是:
step1.
ping address
获取到对于地址的ip
step2. 在/etc/hosts中添加一行如下:
ip address
xxxxxxxxxx
这样就可以玩起来了。文章来源地址https://www.toymoban.com/news/detail-722241.html

到了这里,关于Git 配置SSH,多个 Github 账号配置不同的SSH KEY的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Git bash切换Gitee、GitHub多个Git账号

        Git是分布式代码管理工具,使用命令行的方式提交commit、revert回滚代码。这里介绍使用Git bash软件来切换Gitee、GitHub账号。     假设在gitee.com上的邮箱是alice@foxmail.com 、用户名为alice;在github上的邮箱是bob@foxmail.com、用户名为bob。 账号 名称 邮箱 网站 1 alice alice@foxmai

    2024年02月04日
    浏览(67)
  • 【GIT】GitHub添加ssh密钥

    在想要克隆GitHub项目到本地时,通常开源通过https和ssh两种方式,由于GitHub的服务器步数在海外,https连接受网络波动的影响较大,经常会出现连接中断的情况,相比之下,用ssh方式进行克隆显得更加方便和高效。 GitHub 的 SSH 密钥用于对你的 GitHub 账号进行身份验证,以便你能

    2024年02月12日
    浏览(73)
  • Git一台电脑 配置多个账号

    Git一台电脑 配置多个账号 常用的Git版本管理有 gitee github gitlab codeup ,每个都有独立账号,经常需要在一个电脑上向多个代码仓提交后者更新代码,本文以ssh 方式为例配置 建议:linux 或 mac 用户推荐在 ~/.ssh 路径下运行命令行,Windows用户推荐在“ C:Users用户名.ssh ” 密钥文

    2024年01月23日
    浏览(47)
  • 【GIT】GitHub密钥SSH keys添加

    在生成SSH密钥之前,可以检查是否有任何现有的SSH密钥。 Mac 打开终端: 输入 ls -al ~/.ssh 以查看是否存在现有的SSH密钥。 Windows 打开Git Bash: 输入 ls -al ~/.ssh 以查看是否存在现有的SSH密钥。 Linux 打开: 输入 ls -al ~/.ssh 以查看是否存在现有的SSH密钥。  检查目录列表,看看您是否

    2024年03月08日
    浏览(47)
  • Git 多账号多仓库配置 SSH

    在我们使用 Git 中,有时候会遇到多账号多仓库的情况,比如公司的 GitLab 和 GitHub,以及自己的 GitHub,这时候我们就需要配置多个 SSH 密钥来区分不同的账号和仓库 根据你注册仓库的邮箱生成 SSH 密钥,如果你没有注册仓库,记得先在 Github 或者码云上注册一个,然后再生成

    2024年02月15日
    浏览(30)
  • Git SSH 密钥生成及添加到 GitHub、Gitee

      Git 是现代化软件开发必不可少的工具之一,而 SSH 在 Git 中则扮演着重要角色,尤其当您使用 Git 与 GitHub 或 Gitee 进行交互时。本文将引导您如何生成 SSH 密钥以及如何将其添加到 GitHub 或 Gitee 中。   首先,我们需要在本地计算机上生成 SSH 密钥。这可以通过 Git Bash 或者

    2024年02月15日
    浏览(43)
  • Git 用户名邮箱的全局配置和单仓库配置(不同项目使用不同账号登录)

    因工作和个人的仓库地址、用户名和邮箱都不一样,很多时候一个git账号无法满足工作和个人学习并行的需求。 全局用户名和邮箱是本地 git 客户端的变量,可配置,不随 git 库而改变。gitee 和 github 是按邮箱来统计贡献者(Contributors)的。 我们的目的是在特定项目里设置特定

    2024年02月14日
    浏览(35)
  • 在一台电脑上配置多个Git账号,工作、生活两不误

    任意文件夹下 Git Bash Here 然后输入如下命令来 unset 在操作完上述命令后,可以用来查看情况,这不是必须的。 输入如下代码来生成 ssh key 输入完之后,你可以一起回车,到出一个矩阵框后,就算成功了。默认的文件名应该是 id_rsa 同时还会生成 id_rsa.pub 两个文件 id_rsa 这个是

    2024年02月08日
    浏览(60)
  • idea2021配置Git&GitHub&账号登录授权

    下载地址:https://git-scm.com/downloads 安装很简单,这里不多废话。 点击 GitManage Remotes…点\\\"+\\\"号添加别名和仓库地址 转圈圈的同时会弹出浏览器,打开授权界面、 点击授权按钮后,输入账号密码登录,并再次点击授权按钮 最终出现下面提示,则over! over之后再去idea看,发现已

    2023年04月08日
    浏览(34)
  • 【Git-4】Git 配置多个SSH-Key

    一般公司使用 GitLab 搭建的内部私有 Git 仓库,同时自己平时用 github 的账号,存在两个Git,如果直接使用SSH-Key会把之前的GitLab的SSH-Key覆盖。 有两个 Github 账号,同一台电脑同时连接两个账号进行版本控制。 公司使用 Gitlab账号,自己使用 Github 账号。 查看全局设置 如果对

    2024年02月06日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包