前言
平时总是在gitee、github和自己搭建的代码仓库中,来回切换工作环境,为了安全性,在不同的环境用的密钥也不同,所以就出现了多环境密钥配置的问题
以 gitee 和 github为例
首先创建 ssh-keygen创建密钥对
ssh-keygen -t ed25519 -b 4096 -C "描述信息,一般为邮箱"
-t 选项(默认 `rsa`)
生成的密钥类型(不带默认为 rsa),类型有四种分别是 dsa
| ecdsa
| ed25519
| rsa
-b
选项
表示生成的密钥的大小(以字节:byte 为单位)
在生成时如果指定的 key size 太小也会有安全的问题,建议指定 key size 为 2048
或更大
-C
选项
生成密钥的描述信息。(会追加到公钥.pub 内容的末尾)
-f
选项
文件名称,或者文件路径。
-N
选项
指定新密码,''
表示密码为空。
-q
选项
静默模式,直接生成密钥对,不现实过程中产生的信息。
生成密钥对后,默认位置为C:\Users\用户名\.ssh 文件夹中
如果以前没有配置过密钥对,这里一般有四个文件
know_hosts
config
一个公钥文件
一个私钥文件
后缀为pub的是公钥,另一个是私钥
打开公钥,复制文本内容,到gitee、github中配置
打开 config文件,编辑如下配置
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_ed25519
`### 这里可以配置 端口 port,默认端口22,Host 为 github.com;端口443,Host 为 ssh.github.com
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_ed25519
上面的内容,大概意思就是主机地址为gitee的时候,用gitee的密钥对;github的时候,用github配置的密钥对。 IdentityFile 是指定私钥文件
常见问题
1. 使用 ssh -T git@github.com,提示:connect to host github.com port 22 : xxxxx
# 首先,遇到问题先查看详情
//详细连接过程,-v表示verbose
ssh -vT git@github.com
1.1 检查 ./ssh 下 秘钥文件是否存在
1.2 检查 ./ssh 下 config 文件是否配置
1.3 检查 C:\Windows\System32\drivers\etc\hosts
中,是否配置 github 映射地址:
使用域名查询工具查询IP(如IpAddress),然后将查询到的IP添加到 hosts 中
1.4 如果还有问题,可以 cmd命令查看是否能够ping通;ping不同则可能是DNS污染或者代理没有开启,换个网络环境再试试。
# 使用 nslookup查看IP
nslookup github.com
ping github.com