1

authorized_keysプッシュを使用してサーバを認証しました。私のシステムからコマンドssh 192.168.1.101を実行し、サーバ経由で接続できました。Rubyとの接続に「authorized_keys」を使用した

今、私はそれは私のように

Net::SSH.start("192.168.1.209",username) do |ssh| @output=ssh.exec!("ls -l") end 

、これに必要なユーザ名フィールドのために働いていなかった、ライブラリを試してみました。私はユーザー名なしでしたい。

だから、私はそれが私のためにコマンドを実行し、この

system('ssh 192.168.1.209 "ls -l"') 

を試してみました。しかし、私は最初の例では@outputのような変数に出力します。宝石や解決策を得る方法はありますか?

+0

も、私はシェルプロンプトで、実際に..要求に –

答えて

0

次のようにX []%にパラメータを渡すことができます:

1. dom = ‘www.ruby-rails.in‘ 
2. @whois = %x[whois #\{dom\}] 
1

すべてのssh接続にはユーザー名が必要です。デフォルトは、システムアカウント名か、接続先ホストの.ssh/configに指定されているものです。

アクセスする必要がある場合は、現在のユーザー名をENV['USER']に設定する必要があります。

接続に使用されているユーザ名が不明な場合は、ssh -vで調べてみてください。これは何が起こっているのかを説明する冗長モードです。

+0

を5-10のコマンドを実行する必要があるでしょう、私は192.168.1.209' 'SSHを実行することだ、私は鍵をコピーしているauthorized_keysに追加したので、それはユーザ名を尋ねずに接続。 –

+2

ユーザー名は、認証されたキーでも必ず必要です。なぜなら、そのキーは必ずしもサーバーにログインしているわけではないからです。 'ssh'がOSまたは設定ファイルからユーザー名を取得している可能性があります。 – PinnyM

+1

それは*ユーザ名を求める*しかし、それはそれが*ユーザ名を使用していないことを意味しません – Gareth

0

バッククォートは "システム"機能と非常によく似ていますが、重要な違いがあります。逆引用符で囲まれたシェルコマンドは、結果として標準出力で実行されます。

ので、次の文は、 "ls -lで" のssh 192.168.1.209を実行し、@output変数にディレクトリの一覧ファイルを置く必要があります。

@output = `ssh 192.168.1.209 "ls -l"` 
関連する問題