juju与MAAS一起使用时,无效的SSH密钥错误

这是juju的输出,来自一个干净的安装,2个节点都运行12.04 juju bootstrap – 完成没有错误并将机器分配给用户但仍然没有欢乐juju环境 – 破坏和重建与不同的用户和不同的节点。

root@cloudcontrol:/storage# juju -v status 2012-06-07 11:19:47,602 DEBUG Initializing juju status runtime 2012-06-07 11:19:47,621 INFO Connecting to environment... 2012-06-07 11:19:47,905 DEBUG Connecting to environment using node-386077143930... 2012-06-07 11:19:47,906 DEBUG Spawning SSH process with remote_user="ubuntu" remote_host="node-386077143930" remote_port="2181" local_port="57004". The authenticity of host 'node-386077143930 (10.5.5.113)' can't be established. ECDSA key fingerprint is 31:94:89:62:69:83:24:23:5f:02:70:53:93:54:b1:c5. Are you sure you want to continue connecting (yes/no)? yes 2012-06-07 11:19:52,102 ERROR Invalid SSH key 2012-06-07 11:19:52,426:18541(0x7feb13b58700):ZOO_INFO@log_env@658: Client environment:zookeeper.version=zookeeper C client 3.3.5 2012-06-07 11:19:52,426:18541(0x7feb13b58700):ZOO_INFO@log_env@662: Client environment:host.name=cloudcontrol 2012-06-07 11:19:52,426:18541(0x7feb13b58700):ZOO_INFO@log_env@669: Client environment:os.name=Linux 2012-06-07 11:19:52,426:18541(0x7feb13b58700):ZOO_INFO@log_env@670: Client environment:os.arch=3.2.0-23-generic 2012-06-07 11:19:52,426:18541(0x7feb13b58700):ZOO_INFO@log_env@671: Client environment:os.version=#36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 2012-06-07 11:19:52,428:18541(0x7feb13b58700):ZOO_INFO@log_env@679: Client environment:user.name=sysadmin 2012-06-07 11:19:52,428:18541(0x7feb13b58700):ZOO_INFO@log_env@687: Client environment:user.home=/root 2012-06-07 11:19:52,428:18541(0x7feb13b58700):ZOO_INFO@log_env@699: Client environment:user.dir=/storage 2012-06-07 11:19:52,428:18541(0x7feb13b58700):ZOO_INFO@zookeeper_init@727: Initiating client connection, host=localhost:57004 sessionTimeout=10000 watcher=0x7feb11afc6b0 sessionId=0 sessionPasswd= context=0x2dc7d20 flags=0 2012-06-07 11:19:52,429:18541(0x7feb0e856700):ZOO_ERROR@handle_socket_error_msg@1579: Socket [127.0.0.1:57004] zk retcode=-4, errno=111(Connection refused): server refused to accept the client 2012-06-07 11:19:55,765:18541(0x7feb0e856700):ZOO_ERROR@handle_socket_error_msg@1579: Socket [127.0.0.1:57004] zk retcode=-4, errno=111(Connection refused): server refused to accept the client 
  • 我已尝试过多种方法使用ssh-keygen -t rsa -b 2048,ssh-keygen -t rsa,ssh-keygen创建密钥,我尝试将这些添加到MAAS Web配置页面,但始终得到相同的结果。
  • 之后我将相应的公钥添加到~/.ssh/authorized_keys
  • 我也可以ssh到节点,但由于我没有被要求给它一个用户名或密码或设置任何类型的帐户,我不能手动ssh到节点。 节点的设置全部由maas服务器处理。 看起来错误的键或查找错误的地方似乎是一个简单的错误,只有我能找到的其他建议是破坏环境并重建(但现在无法工作多次)或留下它来构建实例一旦节点通电,但我已经离开了几个小时,并在一夜之间建立,没有运气。

我想出的解决方案是为新引导的节点设置密码,然后手动将SSH密钥插入每个节点。 要为ubuntu用户设置启动密码,请确保/var/lib/cobbler/kickstarts/maas.preseed的以下行:

 di passwd/make-user boolean true di passwd/user-fullname ubuntu di passwd/username string ubuntu di passwd/user-password-crypted password  

完成此操作后,您可以ssh ubuntu @并使用加密密码字符串中指定的密码(最简单的方法是使用您已知的/ etc / shadow文件中的密码)来登录。然后您可以插入SSH公钥在~ubuntu / .ssh / authorized_keys和~root / .ssh /授权密钥下。

请注意,这是一种解决方法 – 一旦您使用ssh-keygen,MaaS应该从您的.ssh目录中提取id_rsa.pub,或者从MaaS WebUI中提取,其中用户可以在其配置文件中指定公钥。 无论我尝试过什么,这些密钥都不会传播,所以我想出了解决方法。

进一步的做法是将.pub密钥添加到您的MaaS节点的.ssh / authorized_keys中,然后将其scp到MaaS中的每个节点:

 for i in `cobbler system list |grep -v default`; do j=`cobbler system dumpvars --name "${i}" | grep hostname |grep -v duplicate |cut -f 2 -d \:`; scp ~/.ssh/authorized_keys ubuntu@${j}:.ssh/authorized_keys; done 

这使您能够反复接受SSH证书错误并在加密字符串中键入密码,以使用SSH公钥填充整个MaaS。

确保您在使用juju的同一主机上生成SSH密钥,并将该机器上的公共一半SSH密钥添加到MAAS中(尝试: ls ~/.ssh/*.pub .pub找到他们所有)。 不需要手动将密钥放入~/.ssh/authorized_keys

如果您没有看到, Juju指南的入门可能会有所帮助。

我面临着同样的问题。 两天前,我开始寻找答案,我发现最重要的是:

运行“juju status”时,您可能会遇到“无效的SSH密钥”错误

这个错误的最可能的来源是juju启动的节点还没有完成启动和安装。 当节点上的时钟太远而不能使OAuthvalidation工作时,可能会发生这种情况,这会导致节点在尝试从元数据服务下载时超时,并最终继续启动到登录提示而不运行Juju预置。

尝试检查节点上的时钟并重置它,如果它与MAAS服务器的时钟非常不同。

https://answers.launchpad.net/maas/+faq/1979

这真的解决了这个问题。 我在我的MAAS服务器上运行ntpdate并安装了新节点,现在效果很好!

确保在bootstrap之后为节点留出足够的时间进行安装; 完成Ubuntu安装可能需要10分钟。 错误消息似乎表明juju正在尝试连接到尚未运行sshd的计算机,这对我来说表明安装程序可能仍在运行。