【问题标题】:use ppk file to connect to sftp in PHP在 PHP 中使用 ppk 文件连接到 sftp
【发布时间】:2015-08-24 00:56:47
【问题描述】:

我无法使用提供的 .ppk 文件连接到 SFTP 服务器。

我已经在 Filezilla 中尝试过这个 ppk 文件,它可以工作。 根据another question 中的一位 cmets,最好使用 phpseclib,但我没有找到有关如何使用 ppk 文件从 SFTP 下载文件的任何说明。有什么方向或建议吗?

这是我不确定是否有帮助的代码。

include('Net/SSH2.php');
include('Crypt/RSA.php');
include('Net/SFTP.php');


DEFINE('SERVER','sample.sftp.com');
DEFINE('USER','sampleUserName');
DEFINE('KEY','sample_key_22733_priv.ppk');

$sftp = new Net_SFTP(SERVER);

//I guess this password is useless here
//and i will have to use my ppk file here but i don't know how

if (!$sftp->login(USER, 'password')) {
    exit('Login Failed');
}

var_dump($sftp->nlist());

【问题讨论】:

标签: php sftp phpseclib


【解决方案1】:

phpseclib 与 PPK 文件完美配合,假设它们是 RSA 密钥而不是 DSA 密钥。只需初始化一个Crypt_RSA 对象,然后在该对象上调用loadKey(file_get_contents('path/to/key.ppk'))

要下载文件,请执行$sftp->get('/path/to/filename.ext')

这是您修改后的原始代码以包含所有这些:

<?php
include('Net/SSH2.php');
include('Crypt/RSA.php');
include('Net/SFTP.php');


DEFINE('SERVER','sample.sftp.com');
DEFINE('USER','sampleUserName');
DEFINE('KEY','sample_key_22733_priv.ppk');

$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents(KEY));

$sftp = new Net_SFTP(SERVER);

//I guess this password is useless here
//and i will have to use my ppk file here but i don't know how

if (!$sftp->login(USER, $rsa)) {
    exit('Login Failed');
}

echo $sftp->get('/path/to/filename.ext');

【讨论】:

    【解决方案2】:

    更新: 正如@neubert 确认的那样,PPK 文件是受支持的,但您确实需要确保它们是 RSA,正如我所解释的,但您不需要 OpenSSH 格式的文件


    将您的 PPK 转换为 OpenSSH RSA 密钥。您可以使用 PuTTYgen 可执行文件进行转换:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

    在 RSA 密钥中拥有它后,您可以将其与 phpseclib 一起使用:http://phpseclib.sourceforge.net/ssh/auth.html#rsakey

    【讨论】:

    • phpseclib 本身不支持 PuTTY 吗?
    • 我不这么认为。 PPK 文件是 putty 特定的,它不是标准的密钥格式。试试看。无论哪种方式,您都必须确保它是 RSA 密钥。
    • $rsa->getPrivateKey(CRYPT_RSA_PRIVATE_FORMAT_PUTTY);?
    • 好的,也许他们确实支持它,但就像我说的那样,您仍然需要确保它是 RSA 密钥而不是 DSA。
    • 他们的网站上有一些很好的例子。这超出了原始问题的范围。我给你的例子是 SSH,但是你可以用类似的方式建立 SFTP。
    猜你喜欢
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2011-03-29
    • 1970-01-01
    • 2015-03-31
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多