簡體   English   中英

Github身份驗證失敗,用戶www-data

[英]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上,但是仍然存在身份驗證失敗。

  • Nginx的
  • 所有文件都設置為屬於www-data:www-data
  • 我已經將www-data的公鑰添加到倉庫的部署密鑰中。
deploy.php命令
 shell_exec("cd /var/www/html/tinfo/; git pull origin master 2>&1;"); 

我的問題是

  1. 如何為www-data創建密鑰?
  2. www-data.ssh目錄是/var/www/.ssh嗎?
  3. 如果我沒看錯,為什么github拒絕我的連接? 我想這與用戶www-data有關,該用戶執行deploy.php文件並通過PHP運行命令。
  4. 與Github服務器通訊時, 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執行的apache2nginx進程。

4-)當您與github服務器交談時,應指定ssh密鑰路徑以發送此密鑰文件以進行授權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM