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-data
www-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 次 |
最近记录: |