问题标签 [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 密钥的 shell 访问权限。
我现在能做的就是从终端 sftp 并手动上传。但我真的很想自动化这个,这样一个 PHP 网站就可以做到这一切。
关于如何从 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% 的成功率。我可以运行一些外部程序,例如带有参数的“C”程序作为 php 脚本中的输入。在 phptelnet 我使用
这很完美。但现在我正在使用 phpseclib。我可以通过 ssh 连接到 unix 服务器并执行输入在程序中硬编码的程序。我在用
现在的问题是如何为程序提供输入。如何使用 exec() 接受参数作为输入。例如,demo.exe 是一个将两个数字相加的程序。所以我能说
另外,我如何使用 exec() 在一次执行中执行多个代码。我有点困惑。非常感谢您对此的任何意见。
提前致谢。
php - phpseclib 与 libssh2
在我的一个项目中,我将使用 PHP 通过 SSH 远程连接许多服务器。它有两种解决方案,phpseclib和基于 libssh2 库的ssh2 PECL Extension for PHP。
那么任何人都可以比较两者并提及它们的优缺点等吗?
openssl - OpenSSL 与 Phpseclib
OpenSSL 与 Phpseclib
你的意见是什么,我正在寻找做 rsa 和散列。我希望它尽可能快。
php - 使用 phpseclib ssh2 exec() 函数时如何设置标志?
我正在使用phpseclib,需要创建几个 php 函数,使某人能够以编程方式 ssh 进入他们的服务器并更改 root 密码,还更改可能忘记密码的用户的密码(因此必须以根)。
我尝试使用 libssh2,但发现使用起来有点讨厌。我现在正在研究 phpseclib,它看起来更健壮。但是当我尝试像这样使用“su”命令时:
我得到答复:
当我尝试使用 sudo 时:
我得到错误:
无论如何,事实证明 su 对于直接 ssh 访问是禁用的,但是在查看了这篇文章之后,事实证明你可以使用以下命令来做到这一点:
从我的笔记本电脑(运行 ubuntu)进入终端时,这最终对我有用,然后我输入了我的密码,然后输入了 root 密码来完成。
引用上面链接的网站:
当给出 -t 时,SSH 命令(使用 -t)远程 sshd 以建立到工作进程的“伪终端”管道。
. 只要它的标准输入是终端,ssh 就会这样做。
. 但是如果 ssh 的标准输入是非终端,
除非给出两个 -t,否则 ssh 不会指示 sshd 建立伪终端:回显密码 | ssh -t -t -l 用户名 remote_host
. 因此,使用 -t -t(来自 ssh)sshd 为客户端进程设置了一个伪终端。
. 客户端,无论是 'tty' 还是 'su' 都无法判断它已连接到虚构的 > 终端:
回声dummystr | ssh -t -t -l 用户名 host.com -c ''tty'
回显密码 | ssh -t -t -l 用户名 host.com -c 'su -'
于是就有了答案。如果您通过一个 >interactive 客户端 ssh(如 OpenBSD 中的客户端 ssh)在 linux 机器上“su root”,请使用 double -t。
因此,正如我上面所说,它实际上是在终端上工作的:
但我真的希望能够使用 phpseclib 执行此命令。唯一的问题是我不知道如何将任何标志放入 exec() 函数中。具体来说,我需要输入 -t 标志(两次)。
我已经找了好久,找不到任何东西。非常感谢您对此的帮助。也很抱歉这篇文章的长度。:)
干杯
乔
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 ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: 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。代码必须是 SHA1 哈希和 RSA,使用我的公钥加密并以 base64 格式显示。不幸的是,到目前为止,我一直没有成功——银行给了我“错误的签名”以及我得到的所有信息。
我所拥有的是:
private_key.pem 这里是我的纯文本私钥。我尝试将加密模式设置为 CRYPT_RSA_ENCRYPTION_OAEP 没有运气。我有 99.9% 的把握,起始 $vk_mac 字符串的格式正确并包含所有必需的详细信息。
有人知道我做错了什么吗?谢谢你。
编辑:
我已将代码更改为此(其中 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 是参数长度的函数。长度是三位数字符串形式的数字 d 是 RSA 秘密指数 n 是 RSA 模数 签名根据 PKCS1 标准 (RFC 2437) 计算。
php - PHPseclib 是否需要关闭连接?
我有两个问题。
1.我正在使用带有私钥的SFTP并通过phpseclib连接。我需要关闭连接还是它会自动关闭连接。如果我需要关闭我该怎么做?
2.phpseclib上传失败如何恢复上传?
提前致谢。
java - Java中的RSA加密,PHP中的解密
我正在尝试在 Android 应用程序中使用 RSA 公钥加密 AES 密钥,然后使用 PHP 和 phpseclib 在服务器上解密 AES 密钥。我已经测试以确保 RSA 加密/解密通过加密静态文本并在之后解密它以检查我是否仍然得到原始文本来确保 RSA 加密/解密在两个平台上都有效。根据测试,RSA 代码在每个平台上单独工作,但平台之间似乎存在差异。
在 Java 中,我使用 Bouncy Castle 库并具有以下代码:
然后在 PHP 中,我使用以下代码来解密 AES 密钥:
当服务器解密 AES 密钥时,我总是收到以下错误:第 1911 行的 C:\xampp\php\PEAR\phpseclib\Crypt\RSA.php 中的解密错误。查看 RSA.php 中的代码,我认为该错误与加密期间不正确的填充有关,但我似乎无法找到修复它的方法。
更新:我发现上面的加密/解密代码实际上是正确的。我遇到的问题是,在将数据从应用程序发送到 php 之前,我没有对输出进行 url 编码,因此一些信息丢失了。