You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel项目连接Ubuntu远程服务器双认证登录失败求助

Laravel SFTP双认证密码验证失败解决方案

1. 核对Laravel SFTP配置逻辑

  • 检查config/filesystems.php中的SFTP配置,确保同时指定私钥路径和密码,且双认证参数配置正确:
    'sftp' => [
        'driver' => 'sftp',
        'host' => '192.168.x.x',
        'username' => 'test',
        'privateKey' => storage_path('app/ssh/id_rsa'), // 确保路径正确,文件权限设为600
        'password' => 'test', // 双认证场景必须保留该参数
        'port' => 22,
        'root' => '/var/www/uploads',
        'timeout' => 30,
    ],
    
  • 确认依赖包league/flysystem-sftp-v3为最新版本,避免版本兼容问题,执行更新命令:composer update league/flysystem-sftp-v3

2. 命令行直连验证双认证流程

在Laravel所在服务器执行SSH命令,模拟双认证登录流程:

ssh -i /path/to/your/private/key test@192.168.x.x
  • 若命令行提示输入密码后成功登录,说明Ubuntu端认证逻辑正常,问题出在Laravel配置或代码;
  • 若命令行无需输入密码直接登录,说明Ubuntu SSH未开启双认证,需调整服务器配置;
  • 若输入密码后仍登录失败,直接排查Ubuntu端的SSH和用户配置。

3. 配置Ubuntu SSH双认证规则

编辑/etc/ssh/sshd_config,确保以下参数设置正确:

PubkeyAuthentication yes
PasswordAuthentication yes
KbdInteractiveAuthentication yes # 替代旧版的ChallengeResponseAuthentication
AuthenticationMethods publickey,password # 强制先公钥验证,再密码验证

修改后重启SSH服务:

sudo systemctl restart sshd

同时检查用户目录权限:

  • test用户的~/.ssh目录权限需为700:chmod 700 /home/test/.ssh
  • ~/.ssh/authorized_keys文件权限需为600:chmod 600 /home/test/.ssh/authorized_keys

4. 开启Ubuntu SSH详细日志排查

编辑/etc/ssh/sshd_config,设置日志级别为DEBUG:

LogLevel DEBUG

重启SSHD后,实时查看连接日志:

sudo journalctl -u sshd -f

触发Laravel的SFTP上传操作,日志会显示认证失败的具体原因(如密码不匹配、认证方式不支持等)。

5. 检查Laravel代码调用逻辑

  • 确认代码中正确使用配置的SFTP磁盘,未动态覆盖密码参数:
    // 正确调用示例
    Storage::disk('sftp')->put('archive.zip', file_get_contents(storage_path('app/archive.zip')));
    
  • 排查是否有代码逻辑错误导致密码参数被篡改,比如.env文件中SFTP_PASSWORD=test配置是否正确。

6. 验证用户密码有效性

  • 重置test用户密码,避免密码输入错误:sudo passwd test,重新设置为test;
  • 检查PAM配置/etc/pam.d/sshd,确保无自定义规则阻止test用户的密码登录(默认配置一般无限制)。

内容的提问来源于stack exchange,提问作者raccoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:05:12