ssh-key
本文将介绍的是如何在 mac 上上配置 SSH Key 中的 private key。
在 Mac 上配置 SSH Key 中的 private key
当往github
的项目上提交代码时,github
需要知道你电脑上有没有和那些Deploy keys
中某个public key
配对的private key
。接下来就是配置怎样找到这个private key
- 生成 1 个 SSH Key:
1 | $ ssh-keygen -t rsa -C "youremail@xxx.com" |
按回车后
1 | Generating public/private rsa key pair. |
最好每次生成时都给SSH Key
取个名字,这样后面在管理时自己也一目了然。我这里的格式是id_rsa_项目名_git提供方
,我生成的所有key
都遵循这个规则命名。建议你也有你自己的一种命名方式,并且保持统一。如果不取名字,默认的是id_rsa
,如果后面生成时不命名,会把这个覆盖掉。密码可以不设置,免得每次提交时还要输入一次,安全性自己衡量吧。第一次生成key
时,会在~
目录下创建一个.ssh
目录。
1 | $ cd ~/.ssh |
把
id_rsa_TestSSH_github.pub
添加到github
对应的项目的Deploy keys
中。ssh
服务器默认是去找id_rsa
,现在需要把这个key
添加到ssh-agent
中,这样ssh
服务器才能认识id_rsa_TestSSH_github
1 | $ ssh-add -K ~/.ssh/id_rsa_TestSSH_github |
这里为什么加上了一个-K 参数呢?因为在 Mac 上,当系统重启后会“忘记”这个密钥,所以通过指定-K 把 SSH key 导入到密钥链中
查看添加结果:
1 | $ ssh-add -l |
- 创建本地的配置文件 ~/.ssh/config,编辑如下:
1 | Host TestSSH.github.com |
Host 的名字可以随意取,我这边按照的规则是项目名.git 服务器来源,接下来会用到这个名字。测试是否配置正确:
1 | $ ssh -T git@TestSSH.github.com (就是刚刚你给Host取的名字) |
敲一下回车,如下出现下面的提示就连接成功了:
1 | Hi MrSeaWave/TestSSH! You've successfully authenticated, but GitHub does not provide shell access. |
一定要注意哦,帐号名称/项目名称,如果这个 key 没有连接成功,它有可能提示的是别的 key 的。
- 修改 github 项目配置,使项目本身能关联到使用的 key。
如果你在之前已经把项目 clone 到本地了,有两种解决方法:
(1) 打开项目目录/.git/config
,将[remote “origin”]
中的url
中的github.com
修改为TestSSH.github.com
,就是你在第 4 步中给Host
取的那个名字。如下:
1 | remote "origin"] |
(2) 也可以在提交时修改
1 | $ git remote rm origin |
如果还没有 clone 到本地,则在 clone 时可以直接将github.com
改为TestSSH.github.com
,如下:
1 | $ git clone git@TestSSH.github.com:MrSeaWave/TestSSH.git |
Happy Coding😄