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

Symfony执行含SSL会话Shell命令时www-data用户主机密钥验证失败求助

解决Symfony中www-data用户SSH主机密钥验证失败问题

核心原因

Web端执行Symfony脚本时,进程以www-data用户运行,该用户的SSH配置(密钥、主机指纹记录)与个人用户不一致,导致无法通过目标主机的密钥验证。

具体解决方案

1. 以www-data身份完成SSH配置(推荐)

无需切换到www-data用户,用sudo -u直接模拟该用户执行命令:

  • 生成www-data专属的SSH密钥对(若需要密钥认证):
    sudo -u www-data ssh-keygen -t ed25519 -N "" -f /var/www/.ssh/id_ed25519
    
    参数说明:-N ""设置空密码,-f指定密钥存储路径(www-data的默认家目录为/var/www)。
  • 将公钥部署到目标主机:
    sudo -u www-data ssh-copy-id user@target-host
    
  • 手动验证并记录主机指纹:
    sudo -u www-data ssh user@target-host
    
    执行后输入yes确认信任主机,www-data的/var/www/.ssh/known_hosts会自动添加该主机的指纹信息。

2. 手动配置SSH文件权限与内容

如果上述命令执行受限,可手动操作:

  • 创建并设置www-data的.ssh目录权限:
    sudo mkdir -p /var/www/.ssh
    sudo chown www-data:www-data /var/www/.ssh
    sudo chmod 700 /var/www/.ssh
    
  • 复制个人用户的主机指纹记录到www-data的known_hosts:
    sudo cp ~/.ssh/known_hosts /var/www/.ssh/
    sudo chown www-data:www-data /var/www/.ssh/known_hosts
    sudo chmod 600 /var/www/.ssh/known_hosts
    
  • 复制密钥文件(若使用个人密钥):
    sudo cp ~/.ssh/id_ed25519 /var/www/.ssh/
    sudo cp ~/.ssh/id_ed25519.pub /var/www/.ssh/
    sudo chown www-data:www-data /var/www/.ssh/id_ed25519*
    sudo chmod 600 /var/www/.ssh/id_ed25519
    sudo chmod 644 /var/www/.ssh/id_ed25519.pub
    

3. 在Symfony命令中指定SSH参数(临时方案)

若不想修改www-data全局配置,可在执行Shell命令时直接传入SSH选项:

  • 跳过主机密钥验证(仅测试环境使用,存在安全风险):
    use Symfony\Component\Process\Process;
    
    $process = new Process([
        'ssh', '-o', 'StrictHostKeyChecking=no', 'user@target-host', 'your-shell-command'
    ]);
    $process->run();
    
  • 指定自定义的密钥和known_hosts文件:
    $process = new Process([
        'ssh',
        '-o', 'UserKnownHostsFile=/var/www/.ssh/known_hosts',
        '-i', '/var/www/.ssh/id_ed25519',
        'user@target-host',
        'your-shell-command'
    ]);
    $process->run();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:45:35