此次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手动添加一下。