Incapace di collegarsi host remoto tramite rete / ssh
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.
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ì.