2014-04-02 254 views
3

添加SSH密鑰我想一個SSH私鑰添加到使用廚師的機器。使用廚師

我是新來的廚師,而不是紅寶石程序員,所以下面的代碼可能會低於最佳

我的食譜包括以下內容:

execute "add private ssh key" do 
    command 'ssh-add ' + ::File.join('/home', node['user'], '.ssh/keys/id_rsa') 
    user node['user'] 
end 

,並在運行sudo chef-client目標機器,那麼當嘗試添加SSH密鑰時,我們會得到「無法打開與您的驗證代理的連接」。

這表明SSH客戶端未運行,所以我改變了配方,以啓動客戶端開始與eval $(ssh-agent) &&。在shell中運行sudo chef-client之後,我們看到綠色的命令,表示該命令已成功執行。

然而,id_rsa密鑰未添加登錄用戶,我看到了SSH客戶端未運行。

我可能正在吠叫錯誤的T恤,但是這暗示我已經爲不同的用戶添加了關鍵字 - 也許副廚師正在使用sudo運行(廚師在不使用sudo時不工作)。

具有與解決此問題的工作,或添加SSH密鑰使用廚師機的人員的經驗?

回答

0

試着改變你的命令語句是:

command "ssh-add /home/#{node['user']} ./ssh/keys/id_rsa" 
+0

這似乎是一種風格變化。如何改變我的字符串連接的幫助? – rikAtee

1

不是從你的問題肯定你在找什麼。應該使用ssh-add在用戶主機上加載代理,以便私鑰可以從主機轉發到主機。這應該通過用戶客戶端上的登錄腳本(如.bashrc)完成。

很抱歉,如果我弄錯,但我覺得你更可能要在服務器上添加一個公鑰authorized_keys文件,爲用戶,使他們能夠通過私鑰進行身份驗證。要做到這一點,你可以追加行的執行資源:

execute "add pub key" do 
    command "echo #{node['pub_key']} >> ~#{node['ssh_user']}/.ssh/authorized_keys" 
    not_if "grep #{node['pub_key']} ~#{node['ssh_user']}/.ssh/authorized_keys" 
end 

一個稍微好一點的方法是使用line食譜,讓你的insert_if_no_match資源。

也許是最好的辦法是使用users社區食譜可以從data_bags安裝公共密鑰。