libssh2
ネットワークプログラムをより安全にするために使用しています。
私は自分のプログラムが OpenSSH クライアント ssh(1) とできるだけ同じ方法で認証することを望んでいます。OpenSSH クライアントは、サーバーによって実際に受け入れられるキーのパスフレーズのみを要求します。
このリンクからわかるように、ssh クライアントは公開鍵を使用する要求を送信し、それが受け入れられると、パスフレーズを使用して秘密鍵のロックを解除できます。
libssh2 はlibssh2_userauth_publickey_fromfile
、秘密鍵と公開鍵のファイル名とパスフレーズを取る関数を提供します。この関数を使用するのは非常に簡単ですが、そもそも公開鍵がサーバーによって受け入れられなかったとしても、秘密鍵のパスフレーズを取得する必要があることを意味します。これは、多数の異なるキーを持っているユーザーにとって明らかに問題です (現在、私のプログラムは ~/.ssh ディレクトリ内のキー ファイルを反復処理しています)。
関数のマニュアル ページを読んでみlibssh2
ましたが、ssh プロトコルの詳細な知識がなければ理解するには、ほとんどの関数が簡潔すぎてわかりません。実際、それらのいくつかはまだ書かれていません。
を使用してsshサーバーによって実際に受け入れられるキーのパスフレーズのみを要求する方法を誰か教えてもらえますlibssh2
か?