Hi all,

I just opened a ticket for this and submitted a patch. Take a look at https://issues.apache.org/jira/browse/LIBCLOUD-309

Thanks,

Chris

On 2013-03-18 17:28, Rudolf Streif wrote:
Short of fixing paramiko which is probably not what we want, imho it
would be beneficial to just catch the paramiko exception and throw a
libcloud exception that just adds some additional hints as to what
could have failed, such as username and key. For most cases that would
go a long way.

:rjs

On Fri, Mar 15, 2013 at 9:07 PM, Tomaz Muraus <to...@apache.org> wrote:

I just spent some time looking into it. It looks like paramiko throws "not a valid DSA private key file" exception if you specify a valid ssh key, but
an invalid username.

This is unfortunate, because it makes it impossible to differentiate
between actual invalid key file and an invalid username.

From the paramiko debug logs:

DEBUG:paramiko.transport:Trying key 4334c61b988ac5eac5152721d2acae08 from
test2.pem
DEBUG:paramiko.transport:userauth is OK
INFO:paramiko.transport:Authentication (publickey) failed.

Keep the following things in mind:

- test2.pem is in fact a valid and working private key
- SSH agent is not used when you specify a password or a key file (we pass
'look_for_keys': False, and 'allow_agent': False to paramiko).

This actually seems like a paramiko issue so I will try to dig some more
there.

On Fri, Mar 15, 2013 at 8:27 PM, Tomaz Muraus <to...@apache.org> wrote:

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 [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 <cpsal...@mist.io> 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 <to...@apache.org> 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 <
rstr...@linuxfoundation.org

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 [2]
down to earth cloud computing




--
-- 
RUDOLF J. STREIF
Director of Embedded Solutions
The Linux Foundation

rudolf.str...@linux.com
Phone: +1.619.631.5383
Skype: rudolfstreif
PGP: RSA 2048/2048 D6E7D28B

Linux Foundation Events Schedule:  events.linuxfoundation.org [3]
 Linux Foundation Training Schedule: training.linuxfoundation.org [4]



Links:
------
[1] http://tools.ietf.org/html/rfc4252#section-5.1
[2] http://mist.io
[3] http://events.linuxfoundation.org/
[4] http://training.linuxfoundation.org/

--
mist.io
down to earth cloud computing

Reply via email to