背景
今天在使用hexo提交github代码的时候,突然有了如下的报错:
1 | ssh: Could not resolve hostname github.com: nodename nor servname provided, or not known |
解决分析
按照报错的提示,是无法解析访问github.com了。
于是立马访问了下http://github.com网站,没有问题。
检查了下\etc\hosts
文件,也没有写死github的地址,那么问题出在哪里呢?
我是通过ssh来提交的,突然想来在添加ssh秘钥后第一次访问的时候,会有一个警告,说明是否要在本地添加一次秘钥并记录hosts地址。
于是找了下ssh记录hosts的地址:~/.ssh/known_hosts
果然有一段记录如下:
1 | github.com,13.250.177.223 ssh-rsa .... |
那么问题就出在这儿了。
将这段记录删除,再次提交git,就又出现了首次访问的警告:
再次yes就可以了。
结论
ssh提交的时候,为了方便会通过写known_hosts
文件来记录提交地址,而外网地址是dns控制,实际ip可能会变化导致。
是否要记住写入,就看大家实际情况了。
该问题很多网上给的建议是手动写etc\hosts
文件,如果是因为之前有让ssh记录,那么改hosts
文件也没有用。