SSH: 本地.ssh目录下的公钥文件最好删掉

此次ssh amazon ec2的instance,在家里电脑登陆OK,到了公司电脑登陆失败(只支持公钥机制)。私钥已经拷贝到公司的ubuntu上了,奇怪。ubuntu

后来发现是.ssh目录下存在一些公钥文件致使了这个问题。ssh的时候使用-vvv能够看到不少调试信息,在这里看到在ssh认证的时候,发送过去的公钥不是amazon ec2的公钥,而是我本地.ssh目录下另一个公钥。服务器

因此删除了.ssh目录下全部的公钥文件以后,就OK了。并发

我猜测是这样:ssh

1. 若是在.ssh/config下配置了针对该Host的IdentityFile,那么公钥不会搞错,ssh会寻找私钥文件名.pub这样的文件。spa

2. 貌似私钥文件中也是包含了公钥的,由于只给定一个私钥,ssh也能够分析并发送公钥给server调试

3. 貌似ssh的行为是,若是.ssh目录下有username@hostname签名的公钥,就会去使用这个/些公钥,而不是使用私钥中的。server

Anyway,把公钥文件都删掉就没烦恼了,反正通常生成了公钥私钥对以后,公钥都是上传到服务器侧的,再也不须要了。it

[UPDATE]登录

发现这么作的一个反作用:Ubuntu的ssh-agent会扫描.ssh下的公钥而后自动ssh-add,这样之后登陆只须要输入一次私钥的密码以后就不用输入了。配置

可是如今.ssh下的公钥被我删掉了,因此如今每次都要输入密码。

因此能够将公钥移到另一个地方,而后每次有新的key的话,用ssh-add手动添加一下。

相关文章
相关标签/搜索