opennebula配置了免密,控制端可以使用ssh node1登录到节点端,然后我直接去创建虚拟机,导致创建失败,查看虚拟机日志出现了“镜像不存在”等各种奇葩错误,查文档发现,
要求,前端和节点都可以通过SSH互联才行,所以需要重新配置一下免密,步骤如下:
1、root用户登录控制端
vim /etc/hosts
为所有节点编号
192.168.2.80 front
192.168.2.81 node1
192.168.2.171 node2
其中front为控制端,node为节点端
2、将所有主机上hosts文件进行替换
scp /etc/hosts root@node1:/etc/hosts
scp /etc/hosts root@node2:/etc/hosts
3、登录控制端
su oneadmin(切换到opennebula用户)
生成公钥
ssh-keygen -t rsa
将控制端的公钥写入到 授权秘钥 文件中
cat /var/lib/one/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
设置对应的权限,权限不能太大!!!太大会报错!!!
chmod 644 ~/.ssh/authorized_keys
执行以下命令,启用无密码登录
ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub node1
ssh-copy-id -i /var/lib/one/.ssh/id_rsa.pub node2
执行时,如果要求输入oneadmin密码,直接回车,如果提示“Permission denied, please try again.”,说明节点端文件权限设置有问题,那就手动配置密钥,先查看控制端密钥:
cat /var/lib/one/.ssh/id_rsa.pub
4、节点端手动配置公钥密钥
登录节点端
su oneadmin(切换到opennebula用户)
vim ~/.ssh/authorized_keys
然后将第三步cat命令得到的密钥粘贴进去,注意不能有换行空格之类的。
有几个节点,就重复操作几遍!!!
5、配置完成后,登录控制端
su oneadmin(切换到opennebula用户)
使用命令直接连接
ssh node1
ssh node2
如果没提示输入密码,则配置成功!
6、但opennebula要求控制端和节点端必须互相可连,也就是
从front到front
从front到node
从node到所有node
从所有node返回到front
所以,还需要登录每个节点
su oneadmin(切换到opennebula用户)
生成公钥
ssh-keygen -t rsa
然后把公钥内容再复制到控制端的~/.ssh/authorized_keys中
思考:
换个思路,控制端的~/.ssh/authorized_keys文件中,要将自己的和所有节点的公钥都放进去,然后把这个文件拷贝到每个节点的~/.ssh/authorized_keys中。
用scp将授权秘钥文件拷贝到对应的主机上
scp ~/.ssh/authorized_keys root@node1:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys root@node2:~/.ssh/authorized_keys
如果提示权限问题,那就分别登录到每个节点服务器手动复制一下
参考: