# ssh ssh.example.com Received disconnect from 192.168.1.205: 2: Too many authentication failures for
My first thought is "But you didn't even ASK me for a password!" My second thought is "And you're supposed to be using ssh keys anyway!"
So, I decide I need to specify a specific key to use on the command line with the -i option.
# ssh ssh.example.com -i myAwesomeKey Received disconnect from 192.168.1.205: 2: Too many authentication failures for
Well, that didn't help. Adding a -v shows that it tried a lot of keys... including the one I asked it to. Now, apparently this is the crux of the issue. You see, it looks through the config file (of which mine is fairly extensive as I deal with a few hundred hosts, most of which share a subset of keys, but not all of them). Apparently it doesn't always necessarily try the key I specified FIRST. So, if you have more than, say 5 keys defined, it may not necessarily use the key you want it to use first, it will offer anything from the config file. Yes, even if you have them defined per host. For instance, my config file goes something like this:
Host src.example.com User frank.user Compression yes CompressionLevel 9 IdentityFile /home/username/.ssh/internal Host puppet.example.com User john.doe Compression yes CompressionLevel 9 IdentityFile /home/username/.ssh/jdoe
Apparently, this means ssh will try both of these keys for any host that isn't those two. If the third one you define, "Host ssh.example.com" in our case, is the one you want, it'll do that one THIRD, even though the host entry line matches. The fix is simple: Tack "IdentitiesOnly yes" in there. It tells ssh to apply ONLY the IdentityFile entries having to do with that host TO that host.
Host src.example.com User frank.user Compression yes CompressionLevel 9 IdentitiesOnly yes IdentityFile /home/username/.ssh/internal
The side effect of this is that you don't have to define an IdentityFile line for EVERY HOST. It will apply all the keys it knows about to all of the Host entries in the config, and indeed to every ssh you attempt, listed or not. This is why it didn't always fail, there was a good chance the first one or two in the list worked. It was only when the first 5 it tried didn't work that it failed.
No comments:
Post a Comment