2011-09-06 46 views
2

我要爲我的測試web服務器上的git pull更改設置一個cronjob。但我的私鑰有密碼,我怎麼能通過它作爲參數?沒有輸入私鑰密碼的Git拉

git pull something mypassword 

我願意在cronjob上使用它,我不想在沒有密碼的情況下留下私鑰。

感謝

+0

你可以設置http://訪問你的回購? – Rudi

+0

不,只是SSH :( – dextervip

回答

2

你不想離開沒有密碼的私鑰,但你必須在cron作業描述存儲密碼沒有問題?這似乎有點奇怪。

你也許可以用ssh-agent(不確定,但搜索它)來做到這一點,但坦率地說,我覺得它有點傻。

+0

自動cronjob風格的調用的經驗法則是使用一個單獨的,非常緊密安全的無密碼私鑰(即使用一個單獨的用戶與非常削減的權限)。 – GreyCat

1

沒問題。 keychain是你需要的。你應該可以在你的發行版中找到它。 Gentoo Linux有guide

0

你需要的是隻讀訪問。要通過SSH做到這一點:

  1. 在其中有只讀訪問存儲庫路徑遠程服務器上創建一個用戶
  2. 登錄通過SSH和該用戶驗證,你是能夠讀取文件(less /path/to/repo/.git/config),但不寫(touch /path/to/repo/.git/config應該失敗)。
  3. cron可讀的路徑中創建SSH密鑰而不需要密碼
  4. 啓用與ssh-copy-id -i /path/to/passwordless/id.pub [email protected]
  5. 密碼登錄在crontab列出的腳本的開頭添加eval $(ssh-agent); ssh-add /path/to/passwordless/id;

應該這樣做。

0

您可以使用期望腳本在需要時提供密碼。類似這樣的:

#!/usr/bin/expect -- 

set password ssh-key-password 

spawn git pull 
expect "Enter passphrase*:" {send "$password\r"}