Laravel Flysystem sftp 权限被拒绝

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

我正在尝试将 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 连接时,它连接正常,没有密码提示,因此它使用的是私钥。所以不确定为什么这不起作用。

我检查了接收服务器上的

secure日志,里面什么也没有。

php laravel-5 ssh flysystem
4个回答
4
投票
虽然我已经非常老了,而且我在这里犯了死灵术,但我遇到了这个问题,但这些修复都没有帮助。发生的情况(也可能发生在其他人身上)是密钥类型是 openssh 而不是 rsa 并且对

ssh2::_privatekey_login

 的调用返回 false,导致整个事件失败。如果您的密钥是 openssh(由 
-----BEGIN OPENSSH PRIVATE KEY-----
 标识为标头),请运行以下命令将其转换为 RSA,从而解决问题。

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


    


2
投票
我也有类似的问题。 例外是:

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

在vendor\league lysystem-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 配置有关。目前,这适合我测试我的脚本,但我会寻找原因。

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


0
投票
我也有同样的问题。我已经将用户实际执行 php 的执行更改为用户编写的 sftp 配置。它正在 php-fpm 上运行。我已经更改了 php-pfm 配置上的用户和组。我没有更改 http.conf 它有效!


0
投票
对我来说,上述错误是由于私钥文件的所有权错误造成的

我将密钥 chmod 为 600 并将所有权设置为

www-data:www-data


更改为以下内容并可以很好地验证

actualuser:www-data


    

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