是否有使用用户、密码和私钥/公钥来验证 SFTP 的 PHP 库? [关闭]
Posted
技术标签:
【中文标题】是否有使用用户、密码和私钥/公钥来验证 SFTP 的 PHP 库? [关闭]【英文标题】:Is there a PHP library to auth SFTP using user, password AND private/public key? [closed] 【发布时间】:2022-01-22 09:33:20 【问题描述】:我尝试了https://sourceforge.net/projects/phpseclib/,但没有成功。 所以如果有人知道其他方法,我会很高兴
在 cmd 上使用此命令可以连接,但我希望它在 PHP 上:
sshpass -p 密码 sftp -c aes128-cbc -i ~/dir_to_id_rsa.ppk -P 2222 user@host
PHP 5.6.3
【问题讨论】:
【参考方案1】:我建议您使用 phpseclib v3,它可通过 Composer 安装并适用于 PHP 5.6。示例:
<?php
require __DIR__ . '/vendor/autoload.php';
use phpseclib3\Net\SSH2;
use phpseclib3\Crypt\PublicKeyLoader;
$key = PublicKeyLoader::load(file_get_contents('privatekey'));
$ssh = new SSH2('localhost');
if (!$ssh->login('username', 'password', $key))
throw new \Exception('Login failed');
如果您使用的是 phpseclib v1,那么除非您使用的是最新的 git 版本的 phpseclib,否则您拥有相关密钥和密码的顺序。
无论如何,我会说发布您的 phpseclib 代码,我可以帮助您。
【讨论】:
感谢您的回复。我使用composer尝试了v3:1.我运行了这个命令:composer require phpseclib/phpseclib:~3.0 2.然后安装成功。 3. 执行您的代码时,我得到以下信息:警告:不支持在第 2 行的 /var/www/html/vendor/paragonie/constant_time_encoding/src/Base64.php 中声明 'strict_types' 解析错误:语法错误,意外': ',期待';'或第 45 行 /var/www/html/vendor/paragonie/constant_time_encoding/src/Base64.php 中的 '' 我正在使用 composer 1 来安装它(已弃用),应该有问题吗? @LeonardoSoares - 我的猜测是您使用更新版本的 PHP 执行了composer install
,然后您的 Web 服务器正在运行。 phpseclib.com/docs/install 更详细地讨论了这个一般策略。也就是说,github.com/phpseclib/phpseclib/releases/download/3.0.12/… 刚刚添加到 phpseclib 3.0.12 版本中。试试看,看看它是否适合你。请务必在文件顶部输入require __DIR__ . '/vendor/autoload.php';
。以上是关于是否有使用用户、密码和私钥/公钥来验证 SFTP 的 PHP 库? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章