想做一个代码部署的工具,在阿里云服务器上执行的代码,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
,这个顶多算避免报错,不能算解决)。
求大神解答~
1
pagxir 2017-12-04 18:50:52 +08:00 via Android 1
身份不对
|
4
msg7086 2017-12-04 20:20:44 +08:00 1
大概是说的 /home/www/.ssh 的 owner 不对?
|