天天看点

【OpenStack】nova resize修改实例配置报错的解决办法

声明:

本博客欢迎转发,但请保留原作者信息!

新浪微博:@孔令贤HW;

博客地址:http://blog.csdn.net/lynn_kong

内容系本人学习、研究和总结,如有雷同,实属荣幸!

更新记录:

2013.5.6  发现在Fedora上这样的配置是不行的,还未解决,先记下

2013.5.7  添加Fedora上普通用户无密码SSH登录其他节点的解决方法

2013.5.16  修改为更通用的方法

这个问题是一个网友问我的(上海-李挺),问题如下:

resize虚拟机,出现如下报错:

Command:ssh 192.168.18.43 mkdir -p /var/lib/nova/instances/eac0e362-352f-45ad-b503-d28e588691be

Exit code: 255

Stdout: ''

Stderr: 'Host key verification failed.\r\n'. Setting instance vm_state to ERROR

但手动执行命令可以mkdir成功。

我当时在开会,给他的答复是:“检查一下手动执行命令和代码执行命令是不是同一个用户”。然后他自己动手把问题解决了,确实是我说的原因。下面的方法在各个操作系统上基本是通用的。

1. 先允许切换到nova用户,使用第三个命令注意后面有一个点(该命令只在Fedora中有效,在Ubuntu中无需执行,同时,在Ubuntu上,第四个命令是mkdir -p -m 700 .ssh && cd .ssh)

# usermod -s /bin/bash nova
 # su - nova
 $ chcon -u system_u -r object_r -t user_home_t .
 $ mkdir -p -m 700 --context=system_u:object_r:ssh_home_t:s0 .ssh && cd .ssh
           

2. Disable host identity checking

$ cat > config <<EOF
 Host * 
   StrictHostKeyChecking no 
   UserKnownHostsFile=/dev/null 
 EOF
           

以上两步在每个计算节点上都要执行。

3. 生成并分发ssh公钥

在 某一个计算节点执行:

$ ssh-keygen -f id_rsa -b 1024 -P ""
 $ cp -a /var/lib/nova/.ssh/id_rsa.pub /var/lib/nova/.ssh/authorized_keys
           

将id_rsa和authorized_keys两个文件复制到其他计算节点,以下使用root操作:

$ scp /var/lib/nova/.ssh/id_rsa [email protected]:/var/lib/nova/.ssh/id_rsa
$ scp /var/lib/nova/.ssh/authorized_keys [email protected]:/var/lib/nova/.ssh/authorized_keys
           

4. 设置文件属性

root登录到其他计算节点,执行:

# chown nova:nova /var/lib/nova/.ssh/id_rsa /var/lib/nova/.ssh/authorized_keys
           

OK,现在切换到nova用户,就可以无密码登录其他计算节点了。

继续阅读