[英]Github authentication failed with user www-data
我正在Github和我的服務器之間建立一個鈎子,當Github請求觸發腳本時,它可以自動提取新提交。
全部設置完成,如ssh-keys,git origin。 我可以通過運行git pull origin master
從Github托管的私有倉庫中提取新提交。 在外殼上工作正常。
但是,當我將該命令寫入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.
之后,我通過php文件運行命令whoami
,它返回用戶www-data
。
實際上,我為www-data
用戶生成了一個密鑰,並將其放在/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;");
我的問題是
www-data
創建密鑰? www-data
的.ssh
目錄是/var/www/.ssh
嗎? www-data
有關,該用戶執行deploy.php
文件並通過PHP運行命令。 www-data
未將其私鑰發送到服務器? 非常感謝。
根據Benyi的評論,通過將GitHub添加到已知主機解決了該問題。
ssh-keyscan -t rsa github.com >> /var/www/.ssh/known_hosts
您應該首先指定ssh鍵。 之后,您應該執行所需的git任務。
1-)Ssh鍵不是特定於用戶的。 因此,您可以在任何地方創建rsa密鑰對。 公鑰應復制到github。 私鑰應放在主機上。
2-)在linux環境中,默認.ssh
文件夾路徑位於用戶主目錄下。 如果未指定用戶的主文件夾,則該文件夾應位於/home/www-data/.ssh
。 如果無法訪問此文件夾,則應指定在我的示例中編寫的ssh密鑰。
3-)在linux環境中,由執行nginx
進程的用戶運行的deploy.php
。 通常由www-data user
執行的apache2
和nginx
進程。
4-)當您與github服務器交談時,應指定ssh密鑰路徑以發送此密鑰文件以進行授權。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.