【问题标题】:Laravel Flysystem SFTP connectionLaravel Flysystem SFTP 连接
【发布时间】:2021-04-09 07:47:36
【问题描述】:

我尝试使用 campbell 的 flysystem 将我的数据跨域保存在同一服务器中。 https://github.com/GrahamCampbell/Laravel-Flysystem

但我无法使用 SFTP 使其工作。这是错误:

   Could not login with username: forge

即使我指定了 privateKey,但它不起作用。这是我目前的设置:

   'sftp'      => [
        'driver'     => 'sftp',
        'host'       => 'xxxx.xxx.xxxx',
        'port'       => 22,
        'username'   => 'forge',
        'password'   => 'xxxxxxxxx',
        'privateKey' => '~/putty/privateKey.ppk',
        'root'       => 'cdn.example.com/public',
        'timeout'    => 10
    ],

我已经安装了

   "league/flysystem-sftp": "~1.0"

还有其他我想念的使用 flysystem 的设置,或者有没有更好的方法将上传的文件保存到另一个域?

*更新: 我正在使用 Laravel Forge。

谢谢

【问题讨论】:

  • 您是否能够使用相同的详细信息通过 SSH 连接到远程主机?看起来这是连接设置的问题,而不是代码本身。
  • 例如,从命令行尝试ssh -v -i ~/putty/privateKey.ppk forge@xxxx.xxx.xxxx
  • @Anthony 是的,它工作得很好。我什至尝试将 putty 更改为 git ssh。我可以通过 git bash 连接,但不能在 flysystem 上连接。 Flysystem 不断返回我无法使用用户名登录:forge
  • 您的 PEM 正在使用 ~ 速记。运行 php 的用户实际上是该目录的用户吗?如果没有,请尝试将 privateKey 的值设置为完整路径。
  • 嗨。我仍然尝试在本地开发中连接它。我试过使用完整路径 /c/Users/Mine/.ssh/id_rsa

标签: php laravel


【解决方案1】:

我也遇到了同样的问题。
我可以从我的终端连接到远程主机。
使用 filesystems.conf 中指定的密码或 privateKey 的内容,这也可以,但无法将 privateKey 设置为路径。
经过一番尝试,我终于解决了。
我的 laravel 5.8 filesystems.conf

'sftp' => [
    'driver' => 'sftp',
    'host' => 'HOST',
    'username' => 'LOGIN',
    'privateKey' => base_path() . '/ssh/myPrivateKey',
    'root' => env('MY_PATH'),
    'timeout' => 30,
],

我正在做的愚蠢的事情是使用

'privateKey' => 'ssh/myPrivateKey',

相信 Laravel 会找到它。
替换为

'privateKey' => base_path() . '/ssh/myPrivateKey',

一切顺利:)

接下来要做的是允许您的 apache 用户 (www-data/nobody/whatever) 读取此文件。 chown 很适合。

要在启动紧急模式之前检查您的密钥,只需尝试在没有任何代理的情况下进行 ssh。

ssh -o IdentitiesOnly=yes -o IdentityFile=/path/to/my/privateKey LOGIN@HOST

感谢https://superuser.com/a/268777/911570 的最后一部分。

【讨论】:

    【解决方案2】:

    它不会接受 PPK 或 PEM 作为文件。

    您需要将整个密钥放在 privateKey 字段中

    'sftp' => [
        'driver' => 'sftp',
        'host' => env('SFTP_HOST'),
        'port' => env('SFTP_PORT', 22),
        'username' => env('SFTP_USERNAME'),
        'privateKey' => '-----BEGIN RSA PRIVATE KEY-----
    MIIG4gIBAAKCAYEAxXDGR43F1xLoaJBC3hLC5RECX89Ost5rVTBsefj5vnoms8V2
    RoUGWIZrzK3v8u+ALcfdcAIRFrFd4XM4KeDUBaRQ6a8hc8qFowF7SMATfVnVjInW
    ',
        'root' => env('SFTP_ROOT'),
    ],
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 2011-10-08
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      相关资源
      最近更新 更多