关于PHP使用WebHook的问题 Host key verification failed.
2019-04-18 10:01
573 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35993868/article/details/89372428
然而并没有用,因为我删除的并不是执行git pull用户的known_hosts文件2.切换到www用户
PHP项目在coding使用WebHook自动部署时,git pull出现了下面的问题
Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
一开始在网上查了,基本都是说删除
~/.ssh/known_hosts文件,
然而并没有用,因为我删除的并不是执行git pull用户的known_hosts文件
搞了我两天,原来是用户的问题,下面是我的解决方法:
由于对linux不太熟悉,我都快给搞炸了,会linux的应该都是小意思。
1.查看执行git pull命令的用户
//PHP代码 exec("cd ~ && cd - && cd -", $output);//跳到用户目录,再回刚刚的目录,然后跳到用户目录 print_r($output);//输出 //cd -命令是返回刚刚目录并输出 //不要使用who命令,因为并不一定是它执行git pull的 //反正我就是给它搞晕了,看用户目录就可以知道是哪个用户执行的了 //我的who命令是root用户,而cd -命令的用户目录是www用户
输出的信息是:
Array ( [0] => /home/wwwroot/apche/web, [1]=> /home/www ) //[0]是我自己的项目路径 //[1]是我自己的用户目录,所以执行git pull的是www用户
2.切换到www用户su www
切换成功请跳过这步
如果出现错误,那应该是禁止shell登陆了(如果你是远程连接服务器的话)
//linux命令 vi /etc/passwd //进入编辑后,找到下面这行,把最后面的改为/bin/bash 例:www:x:1001:1001:,,,:/home/www:/xxx/xxx www:x:1001:1001:,,,:/home/www:/bin/bash //然后就可以切换用户su www了 /* 结束后,建议把最后面的改为/usr/bin/git-shell 禁止shell登陆,但是可以执行git命令 */
3.重新添加ssh公钥
剩下的步骤就是创建公钥,然后coding绑定公钥的一些基本步骤了
//linux命令 cd ~ rm -rf .ssh ssh-keygen -t rsa -C "xxx@xx.com" //然后就是设置密码了,不设置就一直回车 //上面的命令分别是 1.进入用户目录。2.删除.ssh目录。3.创建公钥 //接着继续 cat .ssh/id_rsa.pub //会输出你的公钥,复制到coding绑定公钥即可,然后就可以去测试你的了
绑定好之后,到要自动部署的目录
git init git remote add 别名 项目地址 git pull 别名 分支 //第一次连接会要你输入yes
然后就可以了。
下面的自动部署是我复制别人代码,忘记哪里复制的了。。。
class Git { public function push() { // 项目仓库文件夹路径 $dir = '/home/wwwroot/app'; // Coding新版本的webhook若是设置了token,Coding则对每个请求进行了哈希签名 // 这个签名会放在请求头 X-Coding-Signature,在服务器端我们需要进行签名解析才能拿到真正数据 // token验证令牌,与Coding webhook上设置的一致,用于与Coding进行身份验证,防止恶意提交代码 $token = ''; // 从请求头中获取签名 $signature = $_SERVER['HTTP_X_CODING_SIGNATURE']; // 接收Coding post传递的参数 $json_post = file_get_contents('php://input'); // 进行签名解析 $sha1 = hash_hmac("sha1",$json_post,$token); $calculate_signature = 'sha1='. $sha1; // 进行身份验证 if ($calculate_signature !== $signature) { exit(json_encode(['error'=>'error request'])); } // shell_exec()即PHP用于执行系统命令的函数 // cd $dir:进入上面设置的项目仓库文件夹中 // git checkout -f 撤销本地的修改 // git pull origin master 从Coding的项目仓库dev分支拉取最新代码,注意origin为远程仓库的别名,要与 git remote add 远程仓库 // 别名 仓库地址 中的远程仓库别名保持一致 exec("cd $dir && git checkout -f && git pull news dev 2>&1", $output); // exec("cd ~ && cd - && cd -", $output); exit(json_encode($output)); } }
相关文章推荐
- Git使用问题-Host key verification failed!
- 【问题:SSH】win10使用SSH链接服务器时,提示:Host key verification failed
- 【填坑】关于github的Host key verification failed问题
- SSH链接问题 Host key verification failed
- scp或ssh登录时遇到Host key verification failed问题的解决方法
- 在使用shh远程连接时出现Host key verification failed.提示
- scp或ssh登录时遇到Host key verification failed问题的解决方法
- ssh连接出现Host key verification failed.问题
- 记录个小问题:解决SSH中的Host key verification failed
- Ubuntu ssh使用 ssh localhost命令 时出现: Host key verification failed.
- ssh 连接的时候 Host key verification failed.问题解决
- SCP命令只能单项拷贝,另一个方向“RSA host key for 172.16.103.176 has changed and you have requested strict checki Host key verification failed. lost connection”问题
- failed to open stream解决办法-关于WIN主机下配置PHP的若干问题解决方案总结
- 使用SSH登录Solaris提示“Key exchange algorithm failed”的问题
- 关于Java Web开发中Servlet使用Servlet接口的问题
- SSH 登录失败:Host key verification failed 的处理方法
- 关于PHP二维数组排序使用key实现
- 关于使用百度地图SDK申请Key的问题
- [WEB前端开发]-关于Velocity中Map与List操作-解决velocity无法识别Map对象key的问题
- 关于WebValidates.dll验证控件在VS2008和VS2010中使用的问题