Ben*_*nyi 5 php git ssh github nginx
我在 Github 和我的服务器之间设置了一个钩子,当 Github 请求触发脚本时,它可以自动拉新提交。
ssh-keys, git origin 都设置好了。我可以通过运行git pull origin master. 它与外壳一起工作正常。
但是当我将该命令写入deploy.php文件时,它可以由 Github 触发,但会显示错误消息。
Host key verification failed. fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
Run Code Online (Sandbox Code Playgroud)
之后,我whoami通过 php 文件运行一个命令,它返回 user www-data。
其实我给www-data用户生成了一个key ,放到里面/var/www/.ssh,也复制id_rsa.pub粘贴到Github,还是认证失败。
www-data:www-datawww-data的公钥添加到存储库的部署密钥中。deploy.php命令
shell_exec("cd /var/www/html/tinfo/; git pull origin master 2>&1;");
Run Code Online (Sandbox Code Playgroud)
我的问题是
www-data?www-data的.ssh目录/var/www/.ssh?www-data执行deploy.php文件和运行命令的用户有关。www-data将其私钥发送到服务器?非常感谢。
根据 Benyi 的评论,通过将 GitHub 添加到已知主机解决了这个问题。
ssh-keyscan -t rsa github.com >> /var/www/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
您应该首先指定 ssh 密钥。之后,你应该做你想做的 git 任务。
1-) SSH 密钥不是用户特定的。所以你可以在任何地方创建 rsa 密钥对。公钥应该复制到github。私钥应该放在你的主机上。
2-) 在 linux 环境中,默认.ssh文件夹路径在用户主目录下。如果您没有指定用户的主文件夹,它应该在/home/www-data/.ssh. 如果您无法访问此文件夹,则应指定在我的示例中编写的 ssh 密钥。
3-) 在 linux 环境中,deploy.php由执行nginx进程的用户运行。通常apache2和nginx由www-data user.
4-) 当你与 github 服务器通信时,你应该指定你的 ssh 密钥路径来发送这个密钥文件进行授权。
| 归档时间: |
|
| 查看次数: |
1518 次 |
| 最近记录: |