2

これはかなり奇妙です。ホスト マシンに公開鍵を追加しました。私は単に実行することができます

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

リモートシェルを開くだけです。同じマシン上で展開用のカピストラーノ スクリプトを実行することもできます。しかし、私がこの次の単純なルビースクリプトに接続しようとしていたとき

require 'rubygems'
require 'net/ssh'

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

次の例外を除いて、すぐに拒否します。

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

ここに欠けているものはありますか?

あなたの助けに感謝。

4

2 に答える 2

3

さて、問題を数日後に振り返ってみると、次の調整ですぐに成功しました。

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

したがって、前のものとの違いはユーザー名です。この場合は、オプション キーのようにではなく、2 番目の引数として渡されます。

于 2011-01-17T11:22:57.753 に答える
0

SSHキーの場所、またはSSH.startパラメーターで指定したユーザー名で使用するパスワードを指定する必要があります。キーの場合、マップ値を配列として渡す必要があります:keys => ["path_to_key"]。なぜAPIがそのように設定されているのかわかりませんが、そうです。

于 2011-01-10T14:30:31.670 に答える