Thanks for your feedback. I personally think that the first thing we (Libcloud) need to do it detect and propagate correct exception to the caller.
For example, if a user provides an invalid username, password or private key we should throw InvalidAuthenticationCredentials and if an invalid authentication method is provided we should throw InvalidAuthenticationMethod. Because of how SSH protocol works ( http://tools.ietf.org/html/rfc4252#section-5.1) we can't detect other or a more specific errors (please correct me if I'm wrong). I also agree that "cycling through usernames" is a hacky solution, but it's not really much we can do in this case. I'm personally open to adding something like that once #1 has been figured out as long as a user can disable it or maybe it should even be off by default. On Fri, Mar 15, 2013 at 3:52 AM, Chris Psaltis <[email protected]> wrote: > We bumped into this as well as few days ago. > > The issue is that you can't suppose beforehand what is the ssh_username > for a specific image. We currently solve it in our application by creating > a map of ami ids -> ssh_usernames and passing the correct one to libcloud. > However, I think this should be handled on the libcloud level. One idea is > to try/except for several known ssh_usernames, e.g. ec2-user, ubuntu etc. > It is not very graceful, but probably it's the most robust solution that > will require less maintenance. > > What ideas do you have? I'm willing to implement it next week. > > Thanks, > > Chris > > > > > On 2013-03-15 00:12, Rudolf Streif wrote: > >> Thank you, Tomaz. I actually had both issues, username and key. And once I >> added ssh_key to the mix it actually started working. :) >> >> >> >> >> On Thu, Mar 14, 2013 at 11:50 AM, Tomaz Muraus <[email protected]> wrote: >> >> Yes, you need to pass ssh_username="ubuntu" kwarg to the deploy_node >>> method. >>> >>> I honestly thought this was documented on the website somewhere, but I >>> couldn't find it just by quickly glancing over "getting started" and >>> "docs". This means that even if it is documented somewhere it's not >>> documented / presented in a good way if I can't find it myself. We will >>> definitely work on improving the docs and pointing this out >>> more prominently. >>> >>> This thing is also one of the improvements I'm working on for the next >>> release and some of the improvements are already available in trunk and >>> 0.12.x branch. >>> >>> Currently, even if you use LIBCLOUD_DEBUG functionality, you get a bad / >>> unrelated exception if you use a correct key, but an invalid SSH >>> username. >>> >>> paramiko library log messages are especially confusing. They don't >>> indicate >>> any error and one of them even says something along the lines of >>> "authentication successful". >>> >>> All of this makes for a bad user experience so I will try to figure out >>> the >>> best way to detect this issue and throw a more specific exceptions so >>> people won't be confused and need to waste a lot of time on this. >>> >>> On Thu, Mar 14, 2013 at 11:39 AM, Rudolf Streif < >>> [email protected] >>> >>>> wrote: >>>> >>> >>> Thanks, Tomaz. >>>> >>>> I tried to use deploy_node with EC2. I used a key pair already existing >>>> and set the security group right. However, it fails when logging into >>>> the >>>> node and trying to deploy the scripts. I am doing this: >>>> >>>> node = ec2driver.deploy_node(name='**test-3', image=image, size=size, >>>> deploy=msd, ex_keyname="key") >>>> >>>> The image is a Ubuntu 12.10 64-bit, ami-7539b41c >>>> The size is t1.micro >>>> >>>> The error I am getting is libcloud.compute.types.**DeploymentError: >>>> <DeploymentError: node=i-11f73563, error=Bad authentication type >>>> (allowed_types=['publickey']), >>>> driver=<libcloud.compute.**drivers.ec2.EC2NodeDriver object at >>>> 0xdb0b90>> >>>> >>>> I can log in just fine using ssh. The issue could be that the image >>>> expects logins as user "ubuntu" rather than root. Can I set the user >>>> with >>>> the kwargs? >>>> >>>> Thanks, >>>> Rudi >>>> >>>> >>>> >>> >> >> >> -- >> > > -- > mist.io > down to earth cloud computing >
