2016-02-04 74 views
0

我有一臺運行CentOS 7 Apache服務器的VPS。我在/var/www/domain.com目錄中有我的網站,並且遇到了設置git的問題。在Apache虛擬主機上設置git公鑰

我想用一個公共密鑰連接到我的git倉庫,我不斷收到

Permission denied (publickey). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 

當過我嘗試運行任何類型的git命令,獲取,拉,克隆...

我設置在/var/www/.ssh/id_rsa.pub一個的.ssh公共密鑰,使用

sudo ssh-keygen 

我加入了關鍵到位桶,但不管我怎麼努力,我得到錯誤。

有什麼建議嗎?

P.S.分配給/var/www/.ssh的所有者和組是apache:apache with 0700對文件夾的權限和所有文件在=> /var/www/.ssh/

另外,我確實有一個私鑰位於/var/www/.ssh/id_rsa,和我的/var/www/.ssh/config文件看起來像這樣:

Host bitbucket.org 
IdentityFile /var/www/.ssh/id_rsa 
+0

BitBucket有你的公鑰。您正在運行'git'的主機需要您的*私鑰*才能進行身份驗證。這就是公鑰/私鑰身份驗證的工作原理。 – larsks

+0

如果我正確,/var/www/.ssh/id_rsa是存在的私鑰。那是私鑰,對吧? – Jwags

+0

是的,但這不是你在你的問題中所說的,因此我的評論。 – larsks

回答

0

這是應該去到位桶公鑰,而私鑰應該很可能會去默認位置~/.ssh/id_rsa

請注意,如果您覆蓋現有的任何私鑰,您將無法訪問您最初訪問的系統。更好地生成或提供匹配的公鑰到任何私鑰已經位於~/.ssh/id_rsa

如果您確實想要將自定義私鑰與其默認位置分開存儲,那麼必須在您的git設置中對其進行自定義。

總結:

  • 請確保您有儲存在~/.ssh/id_rsa私鑰。
  • 將匹配的公鑰發送到BitBucket。
  • 您可以在~/.ssh/id_rsa/pub處保存公鑰的副本。但它不會被使用。
  • 確保權限爲以下目錄權設置:
    • 你的home目錄(~
    • ~/.ssh目錄
    • 私鑰 - ~/.ssh/id_rsa
    • ~/.ssh下的幾個其他重要文件。

您可以使用下面的腳本來獲得特權固定的,如果它被打破:

chmod go-w ~ 
[[ ! -d ~/.ssh ]] && mkdir ~/.ssh 
chmod 700 ~/.ssh 

[[ -f ~/.ssh/id_rsa ]] && chmod 600 ~/.ssh/id_rsa 
[[ -f ~/.ssh/id_rsa.pub ]] && chmod 640 ~/.ssh/id_rsa.pub 
[[ -f ~/.ssh/authorized_keys ]] && chmod 640 ~/.ssh/authorized_keys 

chown ${USER}: ~ 
chown -R ${USER}: ~/.ssh 

這在大多數情況下解決特權相關的問題,如SSH會拒絕,如果不設置工作權。如果您有任何其他方式,您可能會讓系統潛在受到攻擊,並且即使ssh無法正常工作,您的私鑰也可能因攻擊而被破壞或被盜。

確保示例腳本未從其原始版本(未由其他人修改)進行修改,除非正確記錄了編輯發生的原因。