問題タブ [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.
c - チャネルがブロックされていない場合の libssh2_channel_write の動作
libssh2_channel_write_ex
マニュアルページから:
書き込まれた実際のバイト数、または失敗した場合は負。LIBSSH2_ERROR_EAGAIN がブロックされる場合。LIBSSH2_ERROR_EAGAIN は負の数ですが、それ自体は実際には失敗ではありません。
今、私はそれに問題があります。受信した場合LIBSSH2_ERROR_EAGAIN
、何も送信されておらず、すべてのデータを再送信する必要があるということですか? それとも何らかのデータが送信されたということですか
私の問題は、基になるソケットが保持できるより多くのデータを送信しようとしている場合、とにかくブロックする必要があることです。今後、毎回write()
取得せずに大きなデータブロックを送信するにはどうすればよいですか?LIBSSH2_ERROR_EAGAIN
perl - perl Net::SSH2 チャネル実行タイムアウト
私は Net::SSH2 を使用して、リモート ホストで遅い管理コマンドを実行しています。
Perl 5.8.8 libssh2 1.2.2
channel exec で奇妙な「タイムアウト」が発生し続けます。
$chan->exec( $command );
実行中のコマンドは通常、実行中の最小限の出力で最大 1 時間 (60 分) 実行されます。
短いコマンドは正常に機能します。最小出力の遅いものは、約 1 分後に 1 を返します。
ソケットをブロッキングに設定し、タイムアウトを60分などに設定しました...何も役に立ちませんでした。
何か案は?
php - PHPでSSH2_Shellを使用してコマンドが終了するのを待っています
PHP で動作する SSH2_Shell セッションがあります。私の問題は、次のコマンドに進む前にコマンドを完全に終了する必要があることです。これまでの私のコードは次のとおりです。
tcpdump.sh スクリプトは lftp コマンドを実行していますが、完了するのに十分な時間がありません。指定された時間よりも長くかかる可能性があるため、スリープを使用できません。数秒しかかからない場合は、ユーザーを待たせたくありません。stream_set_blocking を実装するのはうまくいきませんでした。そうすると、ブラウザがフリーズするようです。
全体として、コマンドが終了したことを検出して次のコマンドに移る方法が必要です。
前もって感謝します!
perl - Net::SSH2 の鍵
私はNet::SSH2を使用する単純な perl テスト スクリプトを持っていますが、公開鍵認証で動作させるのに問題があります。
注:いくつかの返信を読んだ後、Net::SSH2 を使用する別のアプリケーションで発生していた問題を絞り込むためにスクリプトを作成したことを言及する必要があることに気付きました。したがって、 Net::OpenSSHやNet::OpenSSH::Compat::SSH2などの代替パッケージに切り替えることはできません。
注更新: salvaが指摘したように、Net::OpenSSH::Compat::SSH2は 、元のアプリケーションにパッチを適用することなく使用できます。
コードは次のとおりです。
ssh-keygen
Ubuntuで使用してキーペアを生成しています:
上記は正しく機能します-サーバーにSSHできます。
Perl コードを実行すると、パスワードで保護されたキーを使用すると、次のエラーが表示されます。
パスワードで保護されていないキーで試してみると、正しく機能します。
次のライブラリがインストールされています。
プロットが厚くなる
と を削除するlibssh2-1
とlibssh2-1-dev
、予想どおりエラーが発生します。
次にlibssh2
ソースからビルドするNet::SSH2
と、開発ヘッダーが見つからないため、を再インストールできません。ただし、再インストールlibssh2-1
しlibssh2-1-dev
てからビルドしlibssh2
てソースからインストールすると、機能します。
これは、Ubuntu 10.04 での libssh2-1-dev のビルドに問題があるということですか? もしそうなら、どのようにソースからインストールし、を必要とせずlibssh2
に正しくインストールするのですか?ソースからのビルドが Ubuntu パッケージを上書きまたは上書きしていると思います。Net::SSH2
libssh2-1-dev
アップデート
Daniel Stenberg の返信で指摘されているように、Ubuntu 10.04 パッケージは現在、少し古くなっています (最新の安定ビルド 1.2.8 と比較すると、バージョン 1.2.2)。Ubuntu パッケージのソース「over the top」から libssh2 をインストールすると、問題が解決します。しかし、これは私には面倒に感じます。Ubuntu パッケージを削除し、ソースから libssh2 をインストールして、Net::SSH2 をビルドするにはどうすればよいですか? Net::SSH2 に libssh2 開発ヘッダーの場所を伝えるにはどうすればよいですか?
更新 2
salva が再び助けに来て、Net::SSH2インストーラーlib
をinclude
ディレクトリで構成して、libssh2 のソース インストールで使用できるようにする方法を示しました。ありがとうサルバ!にパッチを適用する代わりに、 と の上部にある変数をオーバーライドするだけでよいことに注意してMakefile.PL
ください。サルバのパッチを見るまで、私はこれに気づきませんでした。$lib
$inc
Makefile.PL
php - PHP5SSH2関数
CentOS WHM / CPanelサーバーにSSH2をインストールして有効にしました。これは、PHPINFOからのものです。
ssh2SSH2サポート有効拡張バージョン0.11.2libssh2バージョン0.18バナーSSH-2.0-libssh2_0.18リモート転送有効ホストベース認証有効ポーリングサポート有効公開キーサブシステム有効
登録済みのPHPストリームhttps、ftps、compress.zlib、php、file、glob、data、http、ftp、ssh2.shell、ssh2.exec、ssh2.tunnel、ssh2.scp、ssh2.sftp
ただし、SSH2 PHP関数を使用してファイルを受信しようとすると、次のようになります。
警告:ssh2_scp_recv(/ home / XXXX)[function.ssh2-scp-recv]:ストリームを開くことができませんでした:16行目の/pathtoFileにディレクトリがあります
コードは次のとおりです。
php - PHP5、SSH2関数を使用してフォルダー内のすべてのファイルをDLし、リモートサーバーから削除します
あるサーバーから別のサーバーにファイルをDLしようとしています。
接続とログインが成功した後、私はこれを実行します:
しかしもちろん、これは失敗します...そして私は理由がわかりません。フォルダが存在しないと表示されます。/ dlは、リモートサーバー上の絶対パスです。
「opendir」は、リモートサーバーではなく、ローカルサーバー(これが実行されているサーバー)を参照しているように感じます。
ここでの目標は、このフォルダーを調べて、フォルダー内のすべてのファイルをDLすることです。ダウンロード後、リモートサーバーから削除できます。
php - 公開鍵を使用したPHPSSH2認証
PHPモジュールSSH2を使用して、リモートサーバーでコマンドを実行しています。公開鍵(ssh2_auth_pubkey_file())で認証していますが、問題は、id_dsa(秘密)およびid_dsa.pub(公開)鍵をWebサーバーのルートディレクトリ(lighttpd)にコピーし、それ以外の場合はchmod644にする必要があることです。 「公開鍵を使用したルートの認証に失敗しました」というメッセージが表示されます。これは重大なセキュリティ問題のようです。id_dsa chmod 600の権限を保持し、Webサーバーで読み取り可能にしないようにする方法はありますか?つまり、所有者とグループはlighttpd:lighttpdではなくroot:rootのままですか?
php - PHP に新しい .dll を追加すると、Apache サーバーが起動できなくなる
PHP に拡張機能を追加しようとしています。ファイル - libssh2.dll - を適切なディレクトリ (私の php.ini ファイルにリストされている) に置き、拡張子が libssh2.dll であることを確認しました。また、他のスレッドが示唆しているように、.dll ファイルを system および system32 フォルダーにコピーしました。Apache サーバーを起動しようとすると、次の Windows エラーが発生します。
Apache HTTP サーバーに問題が発生したため、終了する必要があります。ご不便をおかけしてしまい申し訳ございません。
Apache Monitor エラー:
要求された操作は失敗しました!
ログをチェックしてこれを確認します:
[2011 年 7 月 26 日火曜日 16:43:06] [警告] pid ファイル C:/Program Files/Apache/logs/httpd.pid が上書きされました -- 以前の Apache 実行のクリーンでないシャットダウン?
私はこの方向に行こうとしましたが、この時点で完全に困惑しています。誰かが私を助けてくれることを願っています。そうすれば、何が悪いのかを理解できます。よろしくお願いします!
乾杯
objective-c - iOS で libssh2 を使用してリバース ポート フォワード
libssh2 を使用して、iOS でリバース ポート フォワードのサンプル コードを探しています。近い例を次に示します。
ポートフォワーディングに使用されているlibssh2のコード例
でもできればiOSとobjective-Cに合わせて作ってほしいです。ストレートCもいいですね。私はソケットと FD コードを警戒しており、私がハックしているソリューションよりも堅牢なソリューションを望んでいます。私はしばらくRTFMing libssh2を試しましたが、結局は単なるRTFコードになってしまいました...そして、このネットワーク部分を行うにはCコードに十分な自信がありません.
編集: iOS 4.3 (例: iphone4、ipad2) でのポート フォワーディングを使用した ssh の実用的な実装に対する報奨金は、具体的である必要はありませんlibssh2
。
php - sftp サーバーを ssh2 で接続しようとしましたが、スクリプトはエラーなしで永久に実行されます
ssh2 を使用して sftp サーバーに接続しようとしましたが、php がループに陥っているようです。エラー報告はオンです。
私のコード:
この出力を生成します。
しかし、スクリプトが ssh2_scp_recv を実行しようとするとすぐに停止し、失敗することなく永久に実行されます。既存のファイルと存在しないファイルで試しました。毎回同じ結果 - スクリプトはループで実行されます。
ssh2_scp_recvだけでなく、サーバーでssh2_execまたはその他の書き込みまたは読み取りが必要なメソッドを試しても、スタックします。
何が起きてる?
ありがとう!