Git 中 ssh 多密钥管理
很多时候咱们对于不同的仓库需要用到不同的 ssh 密钥,比如区分个人用的 git 和公司用的 git ,或者在不同的 git 托管平台间切换等等情况。
遇到上述情况就需要在切换平台的时候同时切换 ssh 密钥,如果手动切换的话会比较麻烦,不过幸好的是咱们有多密钥管理的方法 ww
方法一:ssh-agent
一、准备密钥
可以将最常用的那个密钥设置为默认文件名 id_rsa
(注意密钥文件都是成对存在的,比如 xxx
和 xxx.pub
,其中无后缀文件为私钥,pub后缀文件为公钥,本文中只会同时提到一个文件,但如果要进行操作请两个文件同时操作)
将其他相对不太常用的密钥设置为其他文件名。
当然你也可以将所有密钥都命名一个自己的名字。
二、启动 ssh-agent
如果已经启动请跳过这一步
1 |
|
三、ssh-add
将所有不是默认文件名的密钥通过 ssh-add
添加。(由于默认名称会读取,所以不需要添加)
1 |
|
补充
这种方法在 GitBash 关闭后 ssh-agent 就会关闭,下次打开 GitBash 就需要重新配置。可以说是麻烦死人(
如果是常开的 Linux 服务器还是可以考虑一下这个方法的~
方法二:config 配置文件
一、创建配置文件
在 /.ssh/
下创建一个 config
文件。
二、配置
在 config
文件中加入你需要配置的内容:
Host
HostName
User
IdentityFile
PreferredAuthentications
在每一项后面直接加上自己需要的内容即可(按照惯例肯定还需要一个空格233),每项的释义如下:
Host:自定义的主机名
HostName:实际主机名
User:用户名
IdentityFile:密钥文件名
PreferredAuthentications:权限认证方式,值是 publickey
、 password publickey
、 keyboard-interactive
其中之一。
补充
通过这个方法设置之后是永久有效的(当然除非你又改了配置文件的内容…)
设置以后会导致你使用 git 的时候需要对地址进行一些替换,而又因为这个方法永久有效很容易忘记…所以…也不是很友好
具体需要什么替换可以看下面的栗子~~
如果你的配置文件是这样子的
Host myhost
HostName coding.net
User ayaka@ayaka.com
IdentityFile ~/.ssh/id_rsa_coding
PreferredAuthentications publickey
那么你进行 ssh 测试的时候输入的 ssh -T [email protected]
就应当变成 ssh -T git@myhost
同样的,如果你和咱一样正在使用基于 Git 的静态博客部署,那么你的配置文件中关于 git 的地址也应该修改,比如说咱的:(咱用的是 Hexo ,具体配置文件内容请以你的配置文件为准)
修改前:
1 |
|
修改后:
1 |
|
按照上面的规则,其他任何需要用到 coding.net
的 ssh 相关的地方都应该修改成 myhost