3

我正在尝试将Laravel Flysystem与 PHP League (league/flysystem-sftp) 的 sftp 适配器一起使用。使用 Laravel 5.4 和 Flysystem 3.7 版本。

当我尝试文件放在服务器上时,我收到以下消息:

无法连接到 someadress.com:22。错误 13. 权限被拒绝

这是代码:

$box = new Filesystem(new SftpAdapter(Config::get('flysystem.connections.sftp')));
$box->put('test.txt', 'bar');

以及配置中的连接详细信息:

'sftp' => [
     'driver'     => 'sftp',
     'host'       => 'someadress.com',
     'port'       => 22,
     'username'   => 'someuser',
     'password'   => 'ArndomPa55',
     'privateKey' => '/home/user/.ssh/id_rsa',
     'root'       => '/var/www/html/site/box/',
     'timeout'    => 20,
 ],

当我从运行它的服务器建立 SSH 连接时,它连接正常,没有密码提示,因此它使用的是私钥。所以不知道为什么这不起作用。

我检查了接收服务器上的安全日志,里面什么都没有。

4

3 回答 3

3

虽然非常老,而且我在这里进行死灵术,但我遇到了这个问题,这些修复都没有帮助。发生的事情(并且可能发生在其他人身上)是密钥类型是 openssh 而不是 rsa 并且调用ssh2::_privatekey_login返回 false,导致整个事件失败。如果您的密钥是 openssh(由-----BEGIN OPENSSH PRIVATE KEY-----标头标识),请运行以下命令将其转换为 RSA,从而解决问题。

ssh-keygen -p -m PEM -f [filename here]

于 2019-07-03T15:51:01.497 回答
2

我有一个类似的问题。例外是:

local.ERROR: LogicException: Could not login with username: username, host: xx.xx.xx.xx. 

按照 vendor\league\flysystem-sftp\src\SftpAdapter 中的代码,我发现 hostFingerprint 总是返回 null。之后,我刚刚privateKey => 'path/to/key'从配置中删除,例如

'sftp' => [
     'driver'     => 'sftp',
     'host'       => 'someadress.com',
     'port'       => 22,
     'username'   => 'someuser',
     'password'   => 'ArndomPa55',
     //'privateKey' => '/home/user/.ssh/id_rsa',
     'root'       => '/var/www/html/site/box/',
     'timeout'    => 20,
 ]

,我连接到服务器。我认为这与服务器 sftp 配置有关。现在这适合我测试我的脚本,但我会寻找原因。

我希望这有助于找到一个永久的解决方案。

于 2017-10-04T13:01:40.547 回答
0

我有同样的问题。我已将用户实际执行 php 更改为用户编写的 sftp 配置。它正在使用 php-fpm。我在 php-pfm 配置上更改了用户和组。我没有改变 http.conf 它的工作原理!

于 2018-05-02T03:21:44.743 回答