这是 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=<null> 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 服务器处理。这似乎是一个简单的错误,因为查看了错误的密钥或查看了错误的地方,我能找到的其他建议只有破坏环境并重建(但现在无数次都不起作用)或让它在节点启动后构建实例,但我已经离开了几个小时,并留下一整夜来构建,但没有成功。
答案1
我想到的解决方案是为新启动的节点设置密码,然后手动将 SSH 密钥插入每个节点。要为 ubuntu 用户设置启动密码,请确保将以下行添加到 /var/lib/cobbler/kickstarts/maas.preseed:
d-i passwd/make-user boolean true
d-i passwd/user-fullname ubuntu
d-i passwd/username string ubuntu
d-i passwd/user-password-crypted password <CRYPTED PASSWORD>
完成后,您可以 ssh ubuntu@ 并使用加密密码字符串中指定的密码(最简单的方法是使用您已经知道的 /etc/shadow 文件中的密码)登录。然后,您可以在 ~ubuntu/.ssh/authorized_keys 和 ~root/.ssh/authorized keys 下插入您的 SSH 公钥。
请注意,这是一种解决方法 - 一旦你使用 ssh-keygen,MaaS 应该从你的 .ssh 目录或 MaaS WebUI 中提取 id_rsa.pub,用户可以在其个人资料中指定公钥。无论我尝试什么,这些密钥都不会传播,所以我想出了解决方法。
进一步的秘诀是将 .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。
答案2
确保您在使用 juju 的同一台主机上生成 SSH 密钥,并将该机器上 SSH 密钥的公共部分添加到 MAAS(尝试:ls ~/.ssh/*.pub
找到它们全部)。无需手动将密钥放入~/.ssh/authorized_keys
。
这开始使用 Juju如果你还没有看过,本指南可能会对你有所帮助。
答案3
我遇到了同样的问题。两天前,我开始寻找答案,发现最重要的事情是:
运行“juju status”时,你可能会遇到“无效的 SSH 密钥”错误
此错误最有可能的原因是 juju 启动的节点尚未完成引导和安装。当节点上的时钟与 OAuth 验证的同步程度过大而无法工作时,就会发生这种情况,这会导致节点在尝试从元数据服务下载时超时,并最终继续引导到登录提示符而不运行 Juju 预置。
尝试检查节点上的时钟,如果与 MAAS 服务器的时钟有很大差异,请重置它。
这确实解决了这个问题。我在 MAAS 服务器上运行了 ntpdate 并安装了新节点,现在运行良好!
答案4
确保在引导后留出足够的时间安装节点;完成 Ubuntu 安装可能需要 10 分钟。错误消息似乎表明 juju 正在尝试连接到尚未运行 sshd 的机器,对我来说,这表明安装程序可能仍在运行。