V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dogedoge
V2EX  ›  程序员

PHP 通过 exec 执行 git clone 的问题

  •  
  •   dogedoge · 2017-12-04 18:22:05 +08:00 · 2874 次点击
    这是一个创建于 2335 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想做一个代码部署的工具,在阿里云服务器上执行的代码,ssh-keygen 生成 pub key 后加到 github 项目的 deploy key 中,我是以 root 身份登陆的,生成的 id_rsa 在 /root/.ssh 下,到 /tmp 目录测试 git clone [git@格式的项目地址] 没什么问题,直接 clone 下来了。

    接下来在 php 里通过 exec 执行:

    exec('cd /tmp && git clone [git@格式的项目地址] 2>&1', $out);
    var_dump($out);
    

    提示错误:"Host key verification failed."。

    因为之前 root 身份执行 git clone 之后,/root/.ssh/known_hosts 会自动记录,nginx/php-fpm 的用户和组都是 www/www/tmp 目录的用户和组也改成了 www/www,权限 777,并且把 /root/.ssh/* 全部拷贝到了 www 用户的目录 /home/www/.ssh/ 中(这样确保 know_hosts 肯定是有效的,因为是之前 root 执行后自动记录的),还是不行。

    已经 google 很久了,没什么有效的解决办法(不想关闭 StrictHostKeyChecking,这个顶多算避免报错,不能算解决)。

    求大神解答~

    6 条回复    2017-12-04 20:23:04 +08:00
    pagxir
        1
    pagxir  
       2017-12-04 18:50:52 +08:00 via Android   ❤️ 1
    身份不对
    dogedoge
        2
    dogedoge  
    OP
       2017-12-04 20:12:46 +08:00
    @pagxir 厉害了哥,谢谢
    pagxir
        3
    pagxir  
       2017-12-04 20:15:16 +08:00 via Android   ❤️ 1
    @dogedoge 你也很厉害,竟然能看懂。
    msg7086
        4
    msg7086  
       2017-12-04 20:20:44 +08:00   ❤️ 1
    大概是说的 /home/www/.ssh 的 owner 不对?
    dogedoge
        5
    dogedoge  
    OP
       2017-12-04 20:22:41 +08:00
    @pagxir 当时没想到...
    dogedoge
        6
    dogedoge  
    OP
       2017-12-04 20:23:04 +08:00
    @msg7086 是这个意思
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2761 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:25 · PVG 23:25 · LAX 08:25 · JFK 11:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.