簡體   English   中英

自動git pull到服務器:主機密鑰驗證失敗

[英]Automatic git pull to server: Host key verification failed

我有一台具有gitlab克隆的服務器。 我已經完成了所有設置,並且可以正常運行,但是現在我想自動執行git pull。 我已經基於此添加了ssh密鑰:

https://help.github.com/articles/generating-ssh-keys/

如果我運行git pull through putty命令,它將起作用。

現在,我想創建一個自動進行git pull的php文件。 我這樣做是這樣的:

<?php
echo shell_exec( 'git pull 2>&1' );
?>

這給出了以下錯誤:

主機密鑰驗證失敗。 致命:遠端意外掛斷

我一直在尋找解決方案,而我發現的大多數事情都與ssh密鑰有關。 但是,當我從root用戶運行命令時,它確實起作用。 我將php文件的所有者更改為root。

我對此是全新的,所以我可能會錯過一些顯而易見的事情。 但是,它在我從命令行執行git pull時起作用,而不是在我調用php腳本時起作用,並且我不知道如何解決此問題。

盡管名稱相似,但此錯誤與“主機密鑰”有關,而不是與用於公共密鑰身份驗證的密鑰有關。 此錯誤很可能意味着自遠程密鑰服務器的主機密鑰存儲在known_hosts文件以來,該密鑰已經更改。

檢查存儲在運行php的用戶的.ssh/known_hosts文件中的密鑰(httpd?apache?)。 要解決該錯誤,請刪除與遠程git服務器的主機名或ip相對應的行。 (從安全角度出發,在接受新的“主機密鑰”之前,應先對其進行驗證。)

這篇博客文章可能會有所幫助,它提出的要點是:

創建這樣的php腳本:

<?php
...
   echo shell_exec("/full/path/to/bin/git pull 2&gt;&amp;1");
...

注意:您可以通過執行以下which git來找到(Linux)Git安裝的路徑

然后與apache用戶進行初始Git拉動,以確保將遙控器添加到用戶的known_hosts文件中,如下所示:

sudo -u www git pull

暫無
暫無

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

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