2011-01-10 20 views
2

Das ist ziemlich komisch. Ich habe meinen öffentlichen Schlüssel am Hostcomputer hinzugefügt. Ich kann einfachKann Remote-Host über net/ssh nicht verbinden

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

ausführen, die einfach die Remote-Shell öffnet. Ich kann sogar meine Capistrano-Skripte für die Bereitstellungen auf demselben Rechner ausführen. Aber wenn ich mit diesem folgenden einfachen Ruby-Skript versucht, eine Verbindung

require 'rubygems' 
require 'net/ssh' 

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

es sich weigert, sofort mit folgender Ausnahme:

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

Gibt es etwas, ich bin hier fehlt?

Schätzen Sie Ihre Hilfe.

+0

Was schlagen Sie vor? :) – intellidiot

+0

Klicken Sie auf das "Häkchen" in den Antworten auf Ihre Frage, die Sie akzeptieren. Es trägt zum Ruf derer bei, die sich die Mühe gemacht haben, Ihre Frage zu beantworten. –

+0

Ich habe das nicht bemerkt. Danke Aditya. – intellidiot

Antwort

2

Okay, jetzt nach ein paar Tagen, als ich auf das Problem zurückblicken, ich mit dem folgenden zwicken einen schnellen Erfolg bekam:

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

So ist der Unterschied mit dem vorhergehenden ist der Benutzername, der in diesem case wird als zweites Argument und nicht als Optionsschlüssel übergeben.

0

Sie müssen wahrscheinlich den Speicherort Ihres SSH-Schlüssels angeben oder ein Kennwort für den Benutzernamen, den Sie in den SSH.start-Parametern angeben. Für die Schlüssel müssen Sie den Kartenwert als Array :keys => ["path_to_key"] übergeben. Ich bin nicht sicher, warum die API so eingerichtet ist, aber es ist.

+0

Danke für deine Antwort Jed, aber das behebt das Problem nicht :( – intellidiot