PHP SSH2 SFTP 使用用户名、密码和密钥对



数据供应商已请求使用其SFTP服务器的公共SSH密钥。他们向我们提供了:

  • 用户名
  • 密码
  • 主机名
  • 端口

我正试图使用私钥和用户名/密码在php中使用流包装器ssh2.sftp//。我的代码如下:

$options = array(
    'ssh2' => array(
        'privkey_file' => '/path/to/priv_key',
    ),
);
$context = stream_context_create($options);
fopen('ssh2.sftp://<username>:<password>@<host>:<port>', 'rb', false, $context);

结果:

Warning: fopen(ssh2.sftp://...@<ip>...): failed to open stream: operation failed in ...

我可以使用linux的sftp命令进行连接,所以我知道连接正常,凭据也正常工作。

sftp -oPort=<port> -i /path/to/priv_key -v <username>@<host>

结果:

Authenticated with partial success.
password: <password-entered>
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug1: Sending subsystem: sftp
sftp>

有人有什么想法吗?

我对使用ssh2函数的想法持开放态度,但我强烈希望使用文件系统和流函数。

老实说,我认为您最好使用phpseclib,一个纯PHP SFTP实现。除其他外,使用它比使用libssh2更容易诊断问题。

此外,如果您想使用文件系统和流函数,phpseclib也支持这些:

https://github.com/phpseclib/phpseclib/blob/master/phpseclib/Net/SFTP/Stream.php

相关内容

  • 没有找到相关文章

最新更新