PHP 通过 exec 执行 git clone 的问题

2017-12-04 18:22:05 +08:00
 dogedoge

想做一个代码部署的工具,在阿里云服务器上执行的代码,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,这个顶多算避免报错,不能算解决)。

求大神解答~

2880 次点击
所在节点    程序员
6 条回复
pagxir
2017-12-04 18:50:52 +08:00
身份不对
dogedoge
2017-12-04 20:12:46 +08:00
@pagxir 厉害了哥,谢谢
pagxir
2017-12-04 20:15:16 +08:00
@dogedoge 你也很厉害,竟然能看懂。
msg7086
2017-12-04 20:20:44 +08:00
大概是说的 /home/www/.ssh 的 owner 不对?
dogedoge
2017-12-04 20:22:41 +08:00
@pagxir 当时没想到...
dogedoge
2017-12-04 20:23:04 +08:00
@msg7086 是这个意思

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/411906

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX