Domanda

Questo è abbastanza strano. Ho la mia chiave pubblica aggiunto a computer host. Posso semplicemente eseguire

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

che apre semplicemente la shell remota. Posso anche correre i miei script Capistrano per le implementazioni sulla stessa macchina. Ma quando stavo cercando di connessione con la seguente script ruby ??semplice

require 'rubygems'
require 'net/ssh'

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

rifiuta immediatamente con la seguente eccezione:

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

C'è qualcosa che mi manca qui?

Apprezziamo il vostro aiuto.

È stato utile?

Soluzione

Ok, ora, dopo un paio di giorni, quando mi guardo indietro al problema, ho ottenuto un rapido successo con il seguente Tweak:

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

Quindi, la differenza con il precedente è il nome utente, che in questo caso viene passato come secondo argomento, piuttosto che come una chiave opzionale.

Altri suggerimenti

probabilmente è necessario fornire la posizione della vostra chiave SSH, o di una password per l'utilizzo con il nome utente che fornisci nei parametri SSH.start. per le chiavi, è necessario passare il valore mappa come un :keys => ["path_to_key"] array. Io non sono sicuro perché l'API è impostato in questo modo, ma è così.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top