問題タブ [libssh2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - stream_context_set_params が ssh2.sftp ラッパーで機能しない
こんな機能を使いたい。以下のコードを確認してください
私の通知関数が少なくとも 1 回呼び出されることを期待しています。実際、同じコードが ftp ラッパーでも機能します。
そして、それはうまくいきます!通知関数は何度も呼び出されます。このようなsftpラッパーを使用しようとしています
そして、それもうまくいきません。何か案は?
c - libssh2 公開鍵認証は、鍵の要求が受け入れられた場合にパスフレーズのみを必要とします
libssh2
ネットワークプログラムをより安全にするために使用しています。
私は自分のプログラムが OpenSSH クライアント ssh(1) とできるだけ同じ方法で認証することを望んでいます。OpenSSH クライアントは、サーバーによって実際に受け入れられるキーのパスフレーズのみを要求します。
このリンクからわかるように、ssh クライアントは公開鍵を使用する要求を送信し、それが受け入れられると、パスフレーズを使用して秘密鍵のロックを解除できます。
libssh2 はlibssh2_userauth_publickey_fromfile
、秘密鍵と公開鍵のファイル名とパスフレーズを取る関数を提供します。この関数を使用するのは非常に簡単ですが、そもそも公開鍵がサーバーによって受け入れられなかったとしても、秘密鍵のパスフレーズを取得する必要があることを意味します。これは、多数の異なるキーを持っているユーザーにとって明らかに問題です (現在、私のプログラムは ~/.ssh ディレクトリ内のキー ファイルを反復処理しています)。
関数のマニュアル ページを読んでみlibssh2
ましたが、ssh プロトコルの詳細な知識がなければ理解するには、ほとんどの関数が簡潔すぎてわかりません。実際、それらのいくつかはまだ書かれていません。
を使用してsshサーバーによって実際に受け入れられるキーのパスフレーズのみを要求する方法を誰か教えてもらえますlibssh2
か?
c++ - libtoolizeもglibtoolizeも見つかりませんでした
.cppファイルをコンパイルしようとしていますが、libssh2をインストールする必要があります。libssh2.orgからパッケージをダウンロードし、次のように入力すると:./buildconf次のようになります。
libtoolizeもglibtoolizeも見つかりませんでした!
どうすればよいかわかりません。ヘッダーlibssh2.h(#include)にインクルードしました。また、ファイルは、コンパイルしようとしているソースファイルと同じフォルダーに存在します。
php - sftp によるトランザクションの制限とその設定方法はありますか?
sftp 接続ssh2.sftpのラッパーを使用しました。すべてのトランザクションに対して 1 つのセッション ハンドルを使用した場合、少数のトランザクションの後、伝送速度が非常に遅くなります。ただし、再接続後は通信速度は問題ありません。例:
再接続せずに問題を解決する方法はありますか? ありがとう。
php - PHP Windows マシンに SSH2 をインストールする
これをWindows+Apache
マシンにインストールしようとしています。ドキュメンテーションによると、SSH2 にはOpenSSL
およびlibssh2
ライブラリが必要です。php.ini
ファイルに次の行を追加しました。
Apache を再起動しましたが、まだ機能していません ( Fatal error: Call to undefined function ssh2_connect()
)。
このサービスのインストール方法を教えてもらえますか?
ssh - 任意のサーバーと通信する必要があるプログラムは、SSH v1のサポートをどのくらい必要としますか?
プログラムに組み込まれているSSHコードを使用して、ユーザーが選択したサーバーに接続する必要があるクロスプラットフォームのC++プログラムである新しいプロジェクトを開始しています。libssh
との間で決定しようとしていlibssh2
ます。(ライセンスは問題ではありません。libssh
のLGPLは問題ありません。)
libssh2
このページから、1つの可能な例外を除いて、進むべき道であるように思われます。SSHv1はサポートしていません。最近、SSHv1しかサポートしていないサーバーの割合がわかりません。誰かがこの分野での経験がありますか、またはそれに答える何かを私に指摘することができますか?
あるいは、SSH v1とv2の両方をサポートするSCP機能を備えた別のSSHライブラリを誰かが指摘できますか?スレッドセーフで、非ブロッキング操作もサポートできるものが望ましいですか?
php - ssh2ストリームラッパーのコールバックオプションは何をしますか?
http://www.php.net/manual/en/wrappers.ssh2.php
コンテキストオプションの1つはコールバックですが、その横に説明がありません。実際、横に説明がない唯一のコンテキストオプションです。
何か案は?
objective-c - ソケットを非ブロッキングにする方法
私はObjective-Cで簡単なRedisクライアントアプリケーションの作成に取り組んでいます。サーバー上のRedisと通信するには、サーバーにSSHで接続し、TCPソケットを開いてデータを送受信する必要があります。libssh2.orgdirect_tcpip.c
の例に従おうとしていますが、うまく機能するようになりました。コードを実行すると、次のように表示されます。
それで私はtelnetを使ってそれと通信しようとします:
この方法でRedisに正常に接続し、対話することができます。はい。
次のステップは、プログラムでサーバーと通信し、アプリのUIからコマンドを送信できるようにすることですが、電話をかけるとプログラムがブロックさaccept()
れ、接続が確立されるのを待ってスタックします。これは問題です。プログラムで接続する必要がありますが、その方法がわかりません。
libssh2_session_set_blocking(session, 0);
以前に電話をかけてみaccept()
ましたが、何も変わらなかったようです。
私の目標は、アプリがリモートのRedisサーバーとできるだけ簡単に通信できるように転送を設定することであり、ソケットプログラミングはまったく初めてです。Redisにはセキュリティが組み込まれていないため、SSHトンネルが必要です。内部で通信することをお勧めします。
私を正しい方向に向けることができる人に感謝します!
perl - Net::SSH2 モジュールは、接続の反対側がデータの送信を終了したことをどのように知るのでしょうか?
私はしばらく SSH2 モジュールを使用してきましたが、非常にうまく機能することがわかりました。私がいつも難しいと思うのは、返されたデータがいつ完了したかを伝えることです。たとえば、インターネット全体で見つけたこのコード
これは、最後の行が返されるとすぐに戻るため、ストリームの終わりに到達したことを「認識」しているようです。私が知りたいのは、データが終了したことをどのように知るかです。プロンプトが返されないので、プロンプトを探していると思います。他の何かがプロンプトのような文字列を返したらどうなるでしょうか? 止まりますか?
php - PHP - 進行中の SSH2 SFTP ダウンロード
StackOverflow はこの件について十分に説明していないように見えるので、これは質問に値すると思います。
プログレスバー付きのPHPを使用してSFTPしたい
プログレスバーが大好きです。しかし、今回は少し違うことをしたいと思っています。PHPで次のことをしたいのですが、これは前回よりもずっと難しいようです:
- SFTP経由でダウンロードを実行します(SSH経由?)
- ユーザーにダウンロードの進行状況を視覚的に示す
- ダウンロードの一時停止と続行を有効にする
FileZillaを考えてみてください。ただし、PHP で構築されたブラウザー内です。Apache をハッキングしたり、Apache の mod を追加したりしたくありません。
実際のダウンロードのオプション
基本的な SFTP ダウンロードについては、ここ、ここ、ここ、ここにたくさんの質問があります。
これらのドキュメントは、 PHP の SSH2 拡張機能(現在使用しています - これは pecl 経由でインストールします) と、私が使用していない代わりのPHPSecLibですが、後で調べる可能性があります。
私のインターフェースは簡単にスワップイン/アウトできます-実装ではなくインターフェースへのコーディングなど...
それは素晴らしいことですが、彼らは実際のダウンロードを実行するだけです。
ダウンロードの進行状況
PHP には と呼ばれる非常に興味深いコールバックがstream_notification_callback
あります。詳細については、こちらを参照してください。
これは見栄えがよく、有望なステップでしたが、誰かが PHP のソース コードを調べたところ、残念ながら SSH2 / SFTPではこれとの統合が許可されていないことがわかりました。
これを調査する努力をしてくれた hek2mgl に感謝します。
アイデアstream_notification_callback
は、データが取得されるたびに現在のダウンロード サイズの通知を渡すことでした。したがって、現在ダウンロードされている量と合計ファイル サイズを使用してパーセンテージを計算するために必要なデータを提供します。しかし、それはSSH2とSFTPには当てはまりません...
そして、一時停止/継続はどうですか?
私の意見では、これは達成するのが最も難しいでしょう。データを一時ファイルにダウンロードすることは可能です...これが私がなんとか掘り起こしたものです: http://ee.php.net/manual/en/function.fread.php#84115 - しかし、そのようなコードをプログレスバーがおかしいようです。
ついに
cURL もありますが、これを SFTP 経由でダウンロードを一時停止/再開することはできませんでした。私が間違っている場合は修正してください。
では、PHP を使用してブラウザー内で前述の要件を統合するにはどうすればよいでしょうか。クライアント側のことは忘れて、ブラウザにデータを取得するだけで十分なので、これを実行するための推奨事項は素晴らしいでしょう.