Error using Net::SSH

(Amit Chitre) #1

From WinXP, I'm trying (for the first time) to connect to remote

solaris server. Code as under:

···

-------------------------
require 'net/ssh'

session = Net::SSH.start( 'remote.solaris.server', 'user', 'pwd' )

session.close
-------------------------

I get the following error message:

-------------------------
c:/amit/ruby/lib/ruby/gems/1.8/gems/net-ssh-1.0.1/lib/net/ssh/userauth/pageant.rb:112:in
`initialize': pageant process not running (Net::SSH::Exception)
        from c:/amit/ruby/lib/ruby/1.8/dl/import.rb:174:in `new'
        from c:/amit/ruby/lib/ruby/1.8/dl/import.rb:174:in `new'
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/net-ssh-1.0.1/lib/net/ssh/userauth/pageant.rb:103:in
`open'
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/net-ssh-1.0.1/lib/net/ssh/userauth/agent.rb:70:in
`connect!'
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/net-ssh-1.0.1/lib/net/ssh/userauth/services.rb:54:in
`register_services'
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/net-ssh-1.0.1/lib/net/ssh/userauth/services.rb:40:in
`call'
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/needle-1.2.0/lib/needle/service-point.rb:117:in
`instance'
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/needle-1.2.0/lib/needle/container.rb:308:in
`[]'
         ... 8 levels...
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/net-ssh-1.0.1/lib/net/ssh/session.rb:120:in
`initialize'
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/net-ssh-1.0.1/lib/net/ssh.rb:47:in
`new'
        from
c:/amit/ruby/lib/ruby/gems/1.8/gems/net-ssh-1.0.1/lib/net/ssh.rb:47:in
`start'
        from ssh1.rb:3
-------------------------

Any help would be greatly appreciated.

Thanks.

Amit

(Jamis Buck) #2

Thanks for the bug report. I'll look into it--in the meantime, you can work around it by explicitly specifying the authentication method(s) to use:

   session = Net::SSH.start('remote.solaris.server', 'user', 'pwd',
                :auth_methods => %w(password keyboard-interactive))

(The problem is occurring because by default, the "publickey" authmethod is tried first and it can't find the SSH agent to use for that. That's a bug--it should silently fall back to the next method.)

- Jamis

···

On Jun 26, 2005, at 4:20 PM, Amit Chitre wrote:

From WinXP, I'm trying (for the first time) to connect to remote

solaris server. Code as under:

(Amit Chitre) #3

Jamis, that worked like a charm... Thanks.

Amit

(Adam P. Jenkins) #4

Jamis Buck wrote:

···

On Jun 26, 2005, at 4:20 PM, Amit Chitre wrote:

From WinXP, I'm trying (for the first time) to connect to remote

solaris server. Code as under:

Thanks for the bug report. I'll look into it--in the meantime, you can work around it by explicitly specifying the authentication method (s) to use:

  session = Net::SSH.start('remote.solaris.server', 'user', 'pwd',
               :auth_methods => %w(password keyboard-interactive))

(The problem is occurring because by default, the "publickey" authmethod is tried first and it can't find the SSH agent to use for that. That's a bug--it should silently fall back to the next method.)

Why does it need ssh-agent to use the publickey authentication method? If your private key is encrypted and you don't have an ssh-agent running, the ssh client should just prompt you for the private key password. Or am I misunderstanding what you're talking about?

Adam

(Jamis Buck) #5

It doesn't--I was just trying to be brief in explaining the bug. What it does (or rather, what it SHOULD be doing) is check to see if there is an ssh-agent running, and if so, use that, otherwise, find the private keys of the current user and read them directly.

Unfortunately, there is a problem right now, and what I believe is happening is that it is trying to connect to an agent that isn't running, because it is misinterpreting the result of the query to see whether an agent is running.

Hopefully I'll have time to track this down sometime this week. (Patches would be welcome, hint hint.)

- Jamis

···

On Jun 27, 2005, at 2:05 PM, Adam P. Jenkins wrote:

Jamis Buck wrote:

On Jun 26, 2005, at 4:20 PM, Amit Chitre wrote:

From WinXP, I'm trying (for the first time) to connect to remote

solaris server. Code as under:

Thanks for the bug report. I'll look into it--in the meantime, you can work around it by explicitly specifying the authentication method (s) to use:
  session = Net::SSH.start('remote.solaris.server', 'user', 'pwd',
               :auth_methods => %w(password keyboard-interactive))
(The problem is occurring because by default, the "publickey" authmethod is tried first and it can't find the SSH agent to use for that. That's a bug--it should silently fall back to the next method.)

Why does it need ssh-agent to use the publickey authentication method? If your private key is encrypted and you don't have an ssh-agent running, the ssh client should just prompt you for the private key password. Or am I misunderstanding what you're talking about?

(Zach Dennis) #6

Jamis Buck wrote:

Jamis Buck wrote:

From WinXP, I'm trying (for the first time) to connect to remote

solaris server. Code as under:

Thanks for the bug report. I'll look into it--in the meantime, you can work around it by explicitly specifying the authentication method (s) to use:
  session = Net::SSH.start('remote.solaris.server', 'user', 'pwd',
               :auth_methods => %w(password keyboard-interactive))
(The problem is occurring because by default, the "publickey" authmethod is tried first and it can't find the SSH agent to use for that. That's a bug--it should silently fall back to the next method.)

Why does it need ssh-agent to use the publickey authentication method? If your private key is encrypted and you don't have an ssh- agent running, the ssh client should just prompt you for the private key password. Or am I misunderstanding what you're talking about?

It doesn't--I was just trying to be brief in explaining the bug. What it does (or rather, what it SHOULD be doing) is check to see if there is an ssh-agent running, and if so, use that, otherwise, find the private keys of the current user and read them directly.

Unfortunately, there is a problem right now, and what I believe is happening is that it is trying to connect to an agent that isn't running, because it is misinterpreting the result of the query to see whether an agent is running.

Hopefully I'll have time to track this down sometime this week. (Patches would be welcome, hint hint.)

Jamis,

Any luck on this. I get this from the latest 1.0.2 gem. I looked at the source, but I do not see where there is any code that would 'read' the keys in, I only see where it attempts to use Pageant, and nothing else....

I would like to use the latest net-ssh with my key authentication w/o using ssh-agent or pageant. Any ideas? Thanks,

Zach

···

On Jun 27, 2005, at 2:05 PM, Adam P. Jenkins wrote:

On Jun 26, 2005, at 4:20 PM, Amit Chitre wrote:

(Jamis Buck) #7

Zach,

Not having a windows box on which to do any decent testing on this, it is hard for me to verify that a solution fixes the problem. If you (or anyone else) were to identify the problem and present me with a patch, I would gladly apply it, but my hands are rather tied, otherwise.

- Jamis

···

On Aug 23, 2005, at 10:23 PM, Zach Dennis wrote:

Jamis Buck wrote:

On Jun 27, 2005, at 2:05 PM, Adam P. Jenkins wrote:

Jamis Buck wrote:

On Jun 26, 2005, at 4:20 PM, Amit Chitre wrote:

From WinXP, I'm trying (for the first time) to connect to remote

solaris server. Code as under:

Thanks for the bug report. I'll look into it--in the meantime, you can work around it by explicitly specifying the authentication method (s) to use:
  session = Net::SSH.start('remote.solaris.server', 'user', 'pwd',
               :auth_methods => %w(password keyboard-interactive))
(The problem is occurring because by default, the "publickey" authmethod is tried first and it can't find the SSH agent to use for that. That's a bug--it should silently fall back to the next method.)

Why does it need ssh-agent to use the publickey authentication method? If your private key is encrypted and you don't have an ssh- agent running, the ssh client should just prompt you for the private key password. Or am I misunderstanding what you're talking about?

It doesn't--I was just trying to be brief in explaining the bug. What it does (or rather, what it SHOULD be doing) is check to see if there is an ssh-agent running, and if so, use that, otherwise, find the private keys of the current user and read them directly.
Unfortunately, there is a problem right now, and what I believe is happening is that it is trying to connect to an agent that isn't running, because it is misinterpreting the result of the query to see whether an agent is running.
Hopefully I'll have time to track this down sometime this week. (Patches would be welcome, hint hint.)

Jamis,

Any luck on this. I get this from the latest 1.0.2 gem. I looked at the source, but I do not see where there is any code that would 'read' the keys in, I only see where it attempts to use Pageant, and nothing else....

I would like to use the latest net-ssh with my key authentication w/o using ssh-agent or pageant. Any ideas? Thanks,