【发布时间】:2019-07-03 23:51:01
【问题描述】:
我正在尝试将 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 连接时,它连接良好,没有密码提示,因此它使用的是私钥。所以不知道为什么这不起作用。
我检查了接收服务器上的安全日志,里面没有任何内容。
【问题讨论】:
-
现在这是一个很好的 MCVE。你解决问题了吗?当运行应用程序的本地用户没有读取/home/user/.ssh/id_rsa的权限时,会出现此问题。它可以从命令行运行,因为您的用户确实有权读取该密钥。
-
另外,您指定了
'password'选项以及'privateKey',如果密码不是私钥密码,则该选项将不起作用。两者一起使用时,'password'的值必须是私钥的密码,而不是远程用户的密码。 -
@CyRossignol 我最终得到了这个工作,我确实删除了密码,但结果证明 apache 是尝试连接的用户的问题,因此我需要授予它访问权限并拥有它有权访问的地方的密钥。
-
太棒了!抱歉,我没有早点看到这个问题 :) 你要发布这个作为你问题的答案吗?
标签: php laravel-5 ssh flysystem