这个非常重要,所以,需要写一下,其内容正如标题所展示的那样。
先说一下我的需求,因为之前我创建了一个 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\.ssh
Administrator
这个是登录者的名称
按照上面的生成规则,生成的两个文件名叫做
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