2017-09-06 70 views
1

我有一個sinple Vagrant文件,創建3個實例:流浪規定外殼:無法運行ssh-copy-id命令

config.vm.define "node1" do |subconfig| 
    subconfig.vm.box = "ubuntu/trusty64" 
subconfig.vm.network "private_network", ip: "192.168.33.10" 
end 

config.vm.define "node2" do |subconfig| 
    subconfig.vm.box = "ubuntu/trusty64" 
subconfig.vm.network "private_network", ip: "192.168.33.11" 
end 

config.vm.define "master" do |subconfig| 
    subconfig.vm.box = "ubuntu/trusty64" 
subconfig.vm.network "private_network", ip: "192.168.33.9" 
subconfig.vm.provision :shell, path: "install.sh" 
end 

在主節點,我要生成SSH密鑰,然後將其複製到2個其他節點。我準備殼(install.sh):運行2最後一行時

apt-get install sshpass -y 
ssh-keygen -t rsa -b 4096 -C "[email protected]" -N "" -f /home/vagrant/.ssh/id_rsa 
sudo chmod -R 755 /home/vagrant/.ssh 
sshpass -p vagrant ssh-copy-id -o StrictHostKeyChecking=no [email protected] 
sshpass -p vagrant ssh-copy-id -o StrictHostKeyChecking=no [email protected] 

但我得到這個錯誤:

> master: /usr/bin/ssh-copy-id: ERROR: No identities found 

但是,如果我ssh到主節點,然後再次運行install.sh,一切很好。我認爲這可能是關於在流浪者上運行時的用戶許可。我該如何解決它?

+0

我的猜測是'install.sh'以特權用戶的身份運行(默認)並且正在尋找'/ root/.ssh/id_rsa'。用'-i/home/vagrant/.ssh。/ id_rsa.pub'指定標識文件。 – fernandezcuesta

+1

這是錯誤的'sudo chmod -R 755/home/vagrant/.ssh'。你太多地打開了'id_rsa'的權限。而SSH不會工作。此外,如果用戶是root,那麼默認情況下,ssh-copy-id將在根目錄的主文件夾 –

回答

0

你有一個問題,你運行你的腳本與root用戶,但推到vagrant文​​件夾,所以你confusde。

在Vagrantfile腳本添加privileged: false

subconfig.vm.provision :shell, path: "install.sh", privileged: false 

所以它會與vagrant用戶,而不是root運行,你不需要再更改密鑰的權限(刪除sudo chmod -R 755 /home/vagrant/.ssh

小提示:如果所有3臺機器都使用同一個機箱,則可以只使用一個公用變量,並刪除所有行:subconfig.vm.box = "ubuntu/trusty64"

config.vm.box = "ubuntu/trusty64" 

config.vm.define "node1" do |subconfig| 
    subconfig.vm.network "private_network", ip: "192.168.33.10" 
end 
... 
+0

中尋找.ssh謝謝。有用 – voxter