2016-03-18 12 views
0

nodeappでssh2を使用してサーバーに接続しようとしています。私はホスト、ポート、ユーザー名、公開鍵を与えられました。私は公開鍵パラメータを持つconnect()メソッドは表示されず、秘密鍵パラメータのみが表示されます。nodejsがssh2と公開鍵を介して接続する場合

これはどのように動作するはずですか?私は公開鍵を使用するはずの別のパラメータがありますか?私が得ているエラーは「これは有効な秘密鍵ではありません」です。

.connect({ 
    host: host, 
    port: 22 
    username: un, 
    privateKey: key.pub 
}); 

助けていただければ幸いです。

答えて

1

接続するために公開鍵を渡す必要はありません。 sshサーバーに公開鍵が必要です(authorized_keysファイル内にありますか?)。

端末からsshを使用してキーを指定した場合とまったく同じです。公開鍵ではなく秘密鍵のみを指定します。

公開キーをprivateKeyパラメータに渡そうとしているため、エラーが発生しています。代わりに秘密鍵を渡す必要があります。

+0

あなたはそうです。私たちは秘密鍵も持っていて、うまくいきました。彼らが私たちに与えた公開鍵が何であったのかは分かりません。 – user3527354

+0

@ user3527354公開鍵と秘密鍵は、単一の鍵ペアの一部です。彼らはお互いが有用であることを要求します。この場合、サーバーには公開キーがあり、秘密キーがあります。通常は、独自の鍵ペアを生成し、サーバー管理者に公開鍵を与えますが、秘密鍵は自分自身で保持します。そうすれば、秘密鍵にアクセスできるのは唯一の人なので、暗号化されたトラフィックを他の誰にも読み取ることはできません。 – Paulpro

+0

@ user3527354あなたのケースでは、誰かが鍵ペアを生成してあなたに送信します。そのため、私有鍵のコピーを持ち、暗号化されたsshトラフィックを読み取ることもできます。彼らはあなたに鍵の半分を与えました、あなたがそれを自分で生成したならば、あなたは両方の半分を持つでしょうから。同じ秘密鍵を使用して別のサーバーにアクセスする場合は、そのサーバーの管理者に公開鍵を与える必要があります。 – Paulpro

関連する問題