問題タブ [phpseclib]
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 - PHP からファイルを SFTP アップロードする方法
PHP を使用してファイルをリモート サーバーに SFTP アップロードするのに問題があります。cURL を使用すると、次のエラーが表示されます。
PHP からの SFTP - 未定義の定数 CURLOPT_PROTOCOLS と CURLPROTO_SFTP?
以下で提案されているように、phpseclibも試しました。
しかし、phpseclib を試すと、次のエラーが発生します。
次に、phpでシステムコマンドを使用してみましたが、何も起こりませんでした:
私も試しました
しかし、私のphpサーバーはss2_connectが定義されていないと言っています。
ターミナルから次のことをしようとしました
しかし、サーバーは scp コマンドを許可していません。ssh キーを作成するためのシェル アクセス権がありません。
今できることは、端末から sftp して手動でアップロードすることだけです。しかし、私は本当にこれを自動化して、PHP Web サイトでこれらすべてを実行できるようにしたいと考えています。
PHP から SFTP アップロードする方法に関するチュートリアルはあまりありません。やり方が悪いからですか?もしそうなら、私は何をすべきですか?アップロード先のサーバーは sftp 接続のみを許可します。
php - phpseclibを使用してsFTPサーバー上のファイルのアクセス許可を変更するにはどうすればよいですか?
やってみ$sftp->chmod('0755', "file.zip");
て$sftp->chmod('0755', "file.zip");
ただし、どちらの場合も、代わりに権限が363に設定されています。
php - phptelnet と phpseclib の比較
PHPからUNIXサーバーに接続し、.exe(C言語)を実行しようとしています。以前はこの目的で phptelnet を使用していましたが、セキュリティ上の問題から phpseclib に移行する必要があります。phptelnet を使用すると、100% の成功率が得られました。PHPスクリプトの入力として引数を使用して、「C」プログラムなどの外部プログラムを実行できました。私が使用するphptelnetで
これは完璧に機能します。しかし、今は phpseclib を使用しています。ssh 経由で UNIX サーバーに接続し、入力がプログラムにハードコーディングされているプログラムを実行できました。私は使っている
ここで問題は、プログラムに入力を提供する方法です。exec() を使用して引数を入力として受け入れるにはどうすればよいですか。たとえば、demo.exe は 2 つの数字を加算するプログラムです。そう言えますか
また、exec() を使用して、1 回の実行で複数のコード行を実行するにはどうすればよいですか。私は少し混乱しています。これに関する情報は大歓迎です。
前もって感謝します。
php - phpseclibとlibssh2
私のプロジェクトの 1 つで、PHP を使用して SSH 経由でリモートで多数のサーバーに接続しようとしています。これには、 phpseclibと、libssh2 ライブラリに基づく PHP 用のssh2 PECL 拡張という 2 つのソリューションがあります。
両方を比較して、長所と短所などについて言及できる人はいますか?
openssl - OpenSSLとPhpseclib
OpenSSLとPhpseclib
あなたの意見は何ですか、私はrsaとハッシュを行うことを探しています。できるだけ速くしたいのですが。
php - phpseclib ssh2 exec()関数を使用するときにフラグを設定するにはどうすればよいですか?
私はphpseclibを使用しており、誰かがプログラムでサーバーにSSH接続してルートパスワードを変更し、パスワードを忘れた可能性のあるユーザーのパスワードを変更できるようにするいくつかのphp関数を作成する必要があります(したがって、としてログインする必要があります)根)。
libssh2を使ってみましたが、使うのが少し面倒でした。私は今、より堅牢に見えるphpseclibを見ています。しかし、私が次のように「su」コマンドを使用しようとしたとき:
返信があります:
sudoを使おうとすると:
エラーが発生します:
とにかく、suは直接sshアクセスに対して無効になっていることがわかりましたが、この記事を見てみると、次のコマンドでそれを実行できることがわかりました。
それが私のラップトップ(ubuntuを実行している)から端末に入るときにとにかく私のために最終的に働いたものであり、それから私は自分のパスワードを入力し、次にrootパスワードを入力して終了しました。
上記にリンクされているサイトからの引用:
Sshコマンド(-tを使用)は、リモートsshdに、-tが指定されたときにワーカープロセスへの「疑似端末」パイプを確立するように指示します。
。sshは、stdinがターミナルである限り、これを実行します。
。ただし、sshのstdinが非終端記号の場合、
2つの-tが指定されていない限り、sshはsshdに疑似終端記号を確立するように指示しません。エコーパスワード| ssh -t -t -l username remote_host
。したがって、-t -t(sshから)を使用して、sshdはクライアントプロセスへの疑似端末を設定します。
。クライアントは、「tty」であろうと「su」であろうと、架空の端末に接続されていることを認識できません。
エコーdummystr| ssh -t -t -l username host.com -c'' tty '
エコーパスワード| ssh -t -t -l username host.com -c'su-'
だから答えがあります。OpenBSDのようなインタラクティブクライアントsshを介してLinuxボックスで「suroot」を実行している場合は、double-tを使用します。
だから、私が上で言ったように、それは実際にターミナルから機能しました:
しかし、私は本当にphpseclibを使用してこのコマンドを実行できるようにしたいと思っています。唯一のことは、exec()関数にフラグを入れる方法がわからないことです。具体的には、-tフラグ(2回)を入れる必要があります。
年齢を探しましたが、何も見つかりません。これに関するいくつかの助けに本当に感謝しています。この投稿の長さについても申し訳ありません。:)
乾杯
ジョー
php - Phpseclib 接続 MYSQL サーバー
ポート転送を介してリモートの MySQL サーバーに接続したいと考えています。残念ながら、私のホスティング プロバイダーはphp_ssh2
サーバーにインストールされていないため、phpseclib
ライブラリを使用する必要があります。これまでのところ、私はできる:
1 - 以下を使用してサーバーに接続しますNet_SSH2
。
実行するとecho $ssh->exec('ls -la');
、正常に接続されたことを示すディレクトリ リストが取得されます。
私が走れば
2 -echo $ssh->exec('echo "select * from table where company_id=\"15\";" | mysql');
それはトリガーします:
stdin: is not a tty エラー 1045 (28000): ユーザー 'user'@'localhost' のアクセスが拒否されました (パスワードを使用: NO)
3 - もしそうならecho $ssh->exec('ssh -f -L 3307:localhost:3306 root@xx.xxx.xxx.xxx sleep 60 >> logfile');
永久に実行され、サーバーからの応答エラーが発生しません。
髪を引っ張っています。ヘルプ!!!!!
php - phpseclibのCrypt_RSAを使用して、銀行の検証コードを暗号化する
指定された文字列形式の確認コード$vk_macを含むクエリを銀行に送信する必要があります。コードは、公開鍵で暗号化され、base64形式で表示されるSHA1ハッシュとRSAである必要があります。残念ながら、これまでのところ、私は失敗しています-銀行は私に「間違った署名」を与え、私が得ているすべての情報を教えてくれます。
私が持っているのはこれです:
ここでのprivate_key.pemは、プレーンテキストの秘密鍵です。暗号化モードをCRYPT_RSA_ENCRYPTION_OAEPに設定してみましたが運が悪かったです。開始$vk_mac文字列が正しくフォーマットされ、必要なすべての詳細が含まれていることを99.9%確信しています。
誰かが私が間違っていることを知っていますか?ありがとうございました。
編集:
コードを次のように変更しました(vk_macは署名が必要な開始形式の文字列で、private_key.pemはデコードされた秘密鍵です)。
これを行うと、生成された署名が正しいことがわかります。
$verifiedはTRUEを返します。
ただし、銀行は「署名が正しくありません」と応答します。他にアイデアはありますか?
編集:
仕様
VK_MAC制御コードの計算
VK_MAC、電子署名用、リクエストで使用、使用されているアルゴリズムのバージョンをチェックおよび確認するため、パラメーターVK_VERSIONで示されます。今回はバージョン008を使用します。VK_MACは、BASE64コーディングの要求パラメーターとして表示されます。
バージョン008
MAC008関数の値は、公開鍵アルゴリズムRSAを使用して計算されます。空のフィールドの値も考慮されます–「000」。
MAC008(x1、x2、…、xn):= RSA(SHA-1(p(x1)|| x1 || p(x2)|| x2||…||p(xn)|| xn)、d、 n)
場所:|| は文字列x1、x2、…を追加する操作です。xnはクエリパラメータです。pはパラメータの長さの関数です。長さは3桁の文字列形式の数値です。dはRSAシークレット指数です。nはRSAモジュラスです。署名はPKCS1標準(RFC 2437)に従って計算されます。
php - PHPseclib接続を閉じる必要があるかどうか?
2つの質問があります。
1.秘密鍵でSFTPを使用し、phpseclibを介して接続しています。接続を閉じる必要があるか、自動的に接続を閉じます。閉じる必要がある場合、どうすればよいですか?
2.phpseclibで失敗した場合にアップロードを再開するにはどうすればよいですか?
前もって感謝します。
java - Java での RSA 暗号化、PHP での復号化
Android アプリで RSA 公開鍵を使用して AES キーを暗号化し、phpseclib を使用して PHP を使用してサーバー上で AES キーを復号化しようとしています。RSA 暗号化/復号化が両方のプラットフォームで機能することを確認するために、静的テキストを暗号化し、後で復号化して元のテキストを取得できるかどうかを確認するテストを行いました。テストによると、RSA コードは各プラットフォームで個別に動作しますが、プラットフォーム間に違いがあるようです。
Java では、Bouncy Castle ライブラリを使用しており、次のコードがあります。
次に、PHP で次のコードを使用して AES キーを復号化します。
AES キーがサーバーによって復号化されているとき、常に次のエラーが発生します: Decryption error in C:\xampp\php\PEAR\phpseclib\Crypt\RSA.php on line 1911. RSA.php のコードを見ると、このエラーは、暗号化中の誤ったパディングと関係があると思いますが、それを修正する方法がわかりません。
更新: 上記の暗号化/復号化コードが実際に正しいことがわかりました。私が抱えていた問題は、アプリからphpにデータを送信する前に出力をURLエンコードしなかったため、情報の一部が失われたことでした.