PHP 中的 SFTP,带密钥

问题描述 投票:0回答:1

我希望使用 PHP 中的代码通过 SFTP 使用密钥对进行身份验证。 我正在使用 Laravel,但我希望使用单独的 SFTP 进行编码。

根据我的研究:

composer require phpseclib/phpseclib:~3.0

显示在供应商目录中。

在课堂上我希望使用它,我有:

use phpseclib3\Crypt\RSA;
use phpseclib3\Net\SFTP;

并且在当前的测试开发方法定义中:

  public static function sftp_listDirectoryItems($connection, $dir, $optargs = []) {
    $sftp = new SFTP($connection);
    $privateKey = new RSA();
    $noop = 1;
  }

这给出了这个

我正在尝试按照指南进行操作

使用 PHP 和私钥连接到 SFTP

但是如上所述,它不适用于基本测试。

希望有人能把我引向正确的方向,因为根据 Barmar 的说法,我发现的例子已经过时了。

我目前使用 SSH 密钥对的 Filezilla,我想使用 PHP 指向相同的密钥文件进行身份验证,并以相同的方式以编程方式操作文件。

我希望我能够获得与旧示例代码所示相同的功能:

// load the private key
$privateKey->loadKey(file_get_contents('/path/to/privatekey.pem'));

// login via sftp
if (!$sftp->login('username', $privateKey)) {
    throw new Exception('sFTP login failed');
}

// now you can list what's in here
$filesAndFolders = $sftp->nlist();

// you can change directory
$sftp->chdir('coolstuffdir');

// get a file
$sftp->get('remoteFile', 'localFile');

// create a remote new file with defined content
$sftp->put('newfile.txt', 'new file content');

// put a local file
$sftp->put('remote.txt', 'local.txt', NET_SFTP_LOCAL_FILE);
php ssh sftp key-pair
1个回答
0
投票

您正在尝试的代码适用于旧版本的 phpseclib。

在最新版本中,使用:

$key = PublicKeyLoader::load(file_get_contents('/path/to/privatekey.pem'));

参见 https://phpseclib.com/docs/publickeys#loading-keys

© www.soinside.com 2019 - 2024. All rights reserved.