我希望使用 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;
}
这给出了这个
我正在尝试按照指南进行操作
但是如上所述,它不适用于基本测试。
希望有人能把我引向正确的方向,因为根据 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);
您正在尝试的代码适用于旧版本的 phpseclib。
在最新版本中,使用:
$key = PublicKeyLoader::load(file_get_contents('/path/to/privatekey.pem'));