Josef Cacek created JCLOUDS-1103:
------------------------------------

             Summary: SSHJ public key authentication fails sometimes with 
"Exhausted available authentication methods" message
                 Key: JCLOUDS-1103
                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1103
             Project: jclouds
          Issue Type: Bug
    Affects Versions: 2.0.0
         Environment: We hit this on OpenStack, but IMO it's not related to the 
provider used.
            Reporter: Josef Cacek
            Priority: Critical


Connecting with SSHJ SshClient sometimes fails with "Exhausted available 
authentication methods" message.

It can be caused by the 
[issue#153|https://github.com/hierynomus/sshj/issues/153] reported on sshj 
GitHub.

In our tests we run following scenario on Openstack:
1. start a Node from an Image
2. make some checks (e.g. ports are open)
3. suspend() the Node and wait till its suspended
4. resume() the Node and wait till its ready (running and ports are open again)
5. get SSH client by calling
{code}
SshClient sshClient = 
getComputeServiceContext().utils().sshForNode().apply(nodeMetadata);
sshClient.connect();
{code}

Sometimes it fails to connect the SSH with exception:

{code}
08:27:48.255 [main] ERROR jclouds.ssh - << 
(cloud-user:rsa[fingerprint(11:50:0c:5f:c9:a4:bc:c0:85:1d:08:d9:9c:d5:b9:52),sha1(ff:aa:5a:8c:80:7f:04:b7:6c:90:b5:dd:91:c4:8e:ea:4f:c3:e7:9f)]@10.8.50.241:22)
 error acquiring {hostAndPort=10.8.50.241:22, loginUser=cloud-user, ssh=null, 
connectTimeout=60000, sessionTimeout=60000} (out of retries - max 1): Exhausted 
available authentication methods
net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication 
methods
    at net.schmizz.sshj.SSHClient.auth(SSHClient.java:217) ~[sshj-0.12.0.jar:na]
    at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:316) 
~[sshj-0.12.0.jar:na]
    at net.schmizz.sshj.SSHClient.authPublickey(SSHClient.java:335) 
~[sshj-0.12.0.jar:na]
    at 
org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:163) 
~[jclouds-sshj-2.0.0-eapqe.4.jar:2.0.0-eapqe.4]
    at org.jclouds.sshj.SSHClientConnection.create(SSHClientConnection.java:49) 
~[jclouds-sshj-2.0.0-eapqe.4.jar:2.0.0-eapqe.4]
    at org.jclouds.sshj.SshjSshClient.acquire(SshjSshClient.java:195) 
[jclouds-sshj-2.0.0-eapqe.4.jar:2.0.0-eapqe.4]
    at org.jclouds.sshj.SshjSshClient.connect(SshjSshClient.java:225) 
[jclouds-sshj-2.0.0-eapqe.4.jar:2.0.0-eapqe.4]
    at ...
{code}

My guess is about 5% of the scenario runs is failing.

We have also a retry-if-fails logic in our code to prevent situations when the 
OpenSSH server in the Node is not yet running. So it tries to get the SSH 
client 12-times with 5 seconds sleeps following every unsuccessful connect. 
These retries don't help to solve this issue.

We've tried to update SSHJ to latest released version {{0.15.0}}, but we still 
hit this issue.

When we used *JSCH* implementation (module {{JschSshClientModule}})  instead of 
the SSHJ (module {{SshjSshClientModule}})   we *didn't see this problem*.





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to