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

Laravel(Docker)环境下Spatie SSH库调用失败:私钥无法访问求助

问题解决:Laravel+Docker中Spatie SSH库无法访问私钥文件

核心原因

Tinker与应用代码运行时的路径上下文或执行用户权限不一致,导致~解析的家目录不符,或文件权限不满足SSH要求。

解决方案

1. 替换为可靠的绝对路径

不要使用~引用路径,改用Laravel内置的public_path()辅助函数,它会直接返回项目public目录的绝对路径,避免环境差异:

public function teste(){
    $result = Ssh::create('fabio', '177.15.0.12')
        ->disablePasswordAuthentication()
        ->usePrivateKey(public_path('private_keys/id_rsa'))
        ->execute('touch /home/fabio/file.txt');
    
    dd($result->getErrorOutput());
}

2. 确认私钥文件的存在与权限

进入Docker容器(执行sail shell),执行以下命令验证:

  • 检查文件是否存在:ls -l /home/sail/public/private_keys/id_rsa
  • 设置SSH要求的私钥权限(必须为600):chmod 600 /home/sail/public/private_keys/id_rsa
  • 确保文件归sail用户所有:chown sail:sail /home/sail/public/private_keys/id_rsa

3. 验证Docker挂载配置

确认docker-compose.yml中项目目录已正确挂载到容器的/home/sail,默认Laravel Sail的挂载配置应为:

volumes:
    - '.:/home/sail'

如果挂载路径错误,会导致容器内无法读取宿主机上的私钥文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:56:23