这个非常重要,所以,需要写一下,其内容正如标题所展示的那样。
先说一下我的需求,因为之前我创建了一个 ssh key 添加到公司的项目下面,用来 push 代码,但是,我如果按照正常的方式再建立 ssh key 的话,就会覆盖原来的 ssh key,并且,如果将原来的 ssh key 添加到 github 上,就会提示说,这个 ssh key 已经被使用。
所以,我现在的需求是,在一台电脑上生成多个 ssh key 用来添加到 github 上。
ok,开始我们的操作。
我们使用下面的命令来创建 ssh key。
ssh-keygen -t rsa -C "邮箱地址" -f ~/.ssh/存储ssh key 的文件名
比如,我第二个是
ssh-keygen -t rsa -C "1929926967@qq.com" -f ~/.ssh/rsa_hexo其实,那个 邮箱地址 可以随便填写,甚至你可以直接填写字段可以,比如 woniu 后面的 -f 是指定哪个文件来保存这个文件
如果,你是用下面的命令来生成 ssh-key
ssh-keygen -t rsa -C "邮箱地址"会在接下来的提示中(第一个提示)让你选择存储文件
但是,经过我的测试,如果按照这种方式,你的 ssh-key 的那个保存文件,不知道保存到哪里去了,所以,为了稳妥,还是开始就指定保存的文件。
接下来还有两个提示,直接 enter 就好了。
然后我们会看见在 ~/.ssh 下面有几个文件,其中两个是原来的 ssh-key 的文件,另外两个是你刚才生成的 ssh-key 存储文件。
win 中 ssh 存储的地方是
C:\Users\Administrator\.sshAdministrator 这个是登录者的名称
按照上面的生成规则,生成的两个文件名叫做
rsa_hexo
rea_hexo.pub我们只需要把 rsa_hexo.pub 下面的文件添加到github上的 ssh-key setting 就好了。

ps: 2021-02-18
下面写的有点乱,你可以参考我的另一篇博文。
但是,现在仅仅只是生成了 ssh-key ,还得做一下区分,下面的方法是我自创的,完全是权宜之举,我相信还有更好的方法,如果我找到更好的方法,我会来更新的。
你还需要在 ~/.ssh 下创建一个叫 config 的文件
touch config然后在 config 文件中配置一下信息。
我的 config 内容如下
# bbsx
#Host github.com
#HostName github.com
#PreferredAuthentications publickey
#IdentityFile ~/.ssh/id_rsa
# hexo
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_hexo_mac
# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径因为,每次连接 github,是使用一个 ssh-key 连接的,所以,config 里面有两个 ssh-key 的配置,对于我来说,一个是公司,一个是我私人的。
如果我要上传公司代码,就要注释掉我私人的ssh-key,反之亦然。
然后,我们在 ~/.ssh 下使用下面的命令来测试 git 是否能连接成功。
ssh -T git@git.com // 或者其他域名地址如果使用上面的 config 的配置,使用这个命令,会出现
Hi benpaodewoniu! You've successfully authenticated, but GitHub does not provide shell access.如果反过来注释就会出现
Hi TaylorChen! You've successfully authenticated, but GitHub does not provide shell access.之所以会出现下面这个情况,就看是哪个github的用户添加的 ssh-key。
后面的纯粹是我琢磨的,你执行完上面的如何可以上传,就可以了,不行再使用下面的。
配置 git 信息,进入你要配置的项目中。
我是 cd blog
然后执行下面的命令
git config user.name <Git注册用户名>
git config user.email <Git注册邮箱>这个命令是在该项目下配置 git 信息,只针对该项目有用。
如果添加了 -global 则会对所有的项目都统一配置。
建议只使用单项目配置。
感谢大家观看,目前,只是权宜之计,很麻烦,如果要上传不同的项目,还得先切换 ssh-key。在接下来的日子里,我会查询相关资料,一次配置就好了,请各位期待。
ps: 时隔 6 个月,终于有替代方法了。
首先,先看一下我的 ~/.ssh/config 的内容
# bbsx
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# hexo
Host hexo.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_hexo_mac和之前唯一的不同就是我把 hexo 的 host 变了。
进入我的博客,我们执行下面的命令
git remote -v出现
origin git@github.com:***/**.git (fetch)
origin git@github.com:***/**.git (push)在 git@ 后面有一个 github.com 这是一个标示,指的是当上传到服务器的时候,会读取 .ssh/config 这个文件中的 Host = git@后面 标志中的配置。
所以,我们只需要修改一下这个 remote url 就好了。
使用
git remote set-url origin git@hexo.com:***/***.git就可以了,然后
git remote -v看一下
origin git@hexo.com:***/***.git (fetch)
origin git@hexo.com:***/***.git (push)后面成功运行。
当然,我们也可以 clone 的时候就指定不同的 Host。
举一个例子
git clone git@hexo.com:benpaodewoniu/exchange_symbols.git