سؤال

This is pretty weird. I have my public key added at host machine. I can simply run

ssh -p <port> -l <username> hostt.com

which simply opens the remote shell. I can even run my capistrano scripts for the deployments on the same machine. But when i was trying connect with this following simple ruby script

require 'rubygems'
require 'net/ssh'

Net::SSH.start("hostt.com", 
               :port => <port>, 
               :username => <username>
              ) do |session|
  puts session.pwd
end

it refuses immediately with the following exception:

`initialize': Connection refused - connect(2) (Errno::ECONNREFUSED)

Is there anything I'm missing here?

Appreciate your help.

هل كانت مفيدة؟

المحلول

Okay, now after a few days when I look back to the problem, I got a quick success with the following tweak:

Net::SSH.start("<host>", "<user>", :port => "<port>") { |ssh|
  puts "logged in"
  puts ssh.exec!("ls -l")  
} rescue puts "failed to connect."

So the difference with the previous one is the username, which in this case is passed as the second argument rather than like an option key.

نصائح أخرى

you probably need to provide the location of your SSH key, or a password to use with the username you provide in the SSH.start parameters. for the keys, you need to pass the map value as an array :keys => ["path_to_key"]. I'm not sure why the api is set up that way, but it is.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top