Chef infra 跑刀在地址部分给了我两个@

Chef infra 跑刀在地址部分给了我两个@,chef-infra,knife,Chef Infra,Knife,我不知道我的设置有什么问题: siegfried@ubuntu:~/chef-repo$ knife ssh -a ipaddress 'name:chefnode' 'uptime' WARNING: Failed to connect to -- Net::SSH::AuthenticationFailed: Authentication failed for user siegfried@192.168.1.73@192.168.1.73 failed f

我不知道我的设置有什么问题:

siegfried@ubuntu:~/chef-repo$ knife ssh -a ipaddress 'name:chefnode' 'uptime'        

WARNING: Failed to connect to  -- Net::SSH::AuthenticationFailed: Authentication       failed for user siegfried@192.168.1.73@192.168.1.73

failed for user siegfried@192.168.1.73@192.168.1.73

里面有一个双
@
。我完全不知道如何修复它。

您的命令中有一个额外的搜索。你想要的是:

knife ssh 'name:chefnode' 'uptime'

我也遇到了同样的问题。在使用-VV选项重新运行我的knife命令后,我可以在调试输出中看到它无法加载我的ssh密钥

could not load public key file `c:/Users/Carolyn/.ssh/id_rsa': Net::SSH::Exception (public key at c:/Users/Carolyn/.ssh/id_rsa.pub is not valid)
原来我的私钥是由PuTTY创建的,格式不正确。键标题如下所示:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,DA9126F8AA3ED553
-----BEGIN RSA PRIVATE KEY-----
在我用ssh-keygen生成的密钥替换了我的私钥和公钥之后,刀子工作起来没有问题。现在,我的私钥头如下所示:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,DA9126F8AA3ED553
-----BEGIN RSA PRIVATE KEY-----

目前还不能100%确定发生了什么,但我相信双“@”只是一条打印消息(它实际上并没有试图连接到该主机)。双重标准来自:

# net-ssh-multi-1.2.0/lib/net/ssh/multi/server.rb
#
192       rescue Net::SSH::AuthenticationFailed => error
193         raise Net::SSH::AuthenticationFailed.new("#{error.message}@dude#{host}")
194       end
我非常巧妙地在这里添加了一个词“dude”,我们可以在我的输出中看到:

user@ubuntu:~/chef-repo$ knife ssh 'name:ep1' uptime
WARNING: Failed to connect to ep1.site.com -- Net::SSH::AuthenticationFailed: Authentication failed for user user@ep1.site.com@dudeep1.site.com
似乎是某种类型的错误,但不是我们的问题。我将继续调试,但可能是按照@Carolyn的建议

更新

事实上,双“@”完全是一个骗局。对我来说,解决方案只是用--ssh password指定密码(我还没有在远程端点上安装密钥)

刀子ssh'名称:ep1'正常运行时间--ssh密码


所以可能是钥匙或密码的问题-VV是你的朋友。

我也犯了同样的错误;我所做的只是将
-P
添加到我正在运行的
刀ssh
命令中<代码>ssh默认情况下,如果未明确告知使用密码验证,则尝试使用密钥验证

错误运行命令的示例:
ssh“角色:”“正常运行时间”-x


固定运行命令示例:
shove ssh”角色:““正常运行时间”-x-p

要解决此问题,请首先检查客户端节点并检查是否提供了根访问权限。 检查文件/etc/ssh/sshd_config文件并将permitrotaccess更改为Yes。 停止ssh,然后重新启动


或者使用--sudo以及命令中的任何用户名和密码

删除CHEF中所有不存在的节点(不活动,CHEF无法访问这些节点等),这样可以解决您的问题。确实如此。

将工作站的公钥添加到目标节点的根目录中。ssh/authorized_keys

此问题通常是由于没有将正确的私钥PEM文件添加到本地ssh代理中造成的。做一些类似于:

$ssh add

尝试使用以下命令:

knife ssh 'name:node1.example.com' -P "redhat" chef-client

这里
node1.example.com
是目标机器
-P
根用户的密码。

对我来说,解决方案是确保我的本地

ssh代理
同时拥有bastion主机和目标节点的密钥。一旦出现这种情况,像这样的命令就起作用了。换言之:

考虑到我使用的是堡垒主机

我有两个不同的ssh密钥对;1从工作站到堡垒主机,另一个从堡垒主机到目标节点

我的工作站的
ssh-agent-l
的输出是


2048 SHA256:yyyyy/Users/me/.ssh/id\u rsa(rsa)
2048 SHA256:zzzzz/Users/me/.ssh/内部vpc专用rsa密钥(rsa)

当我运行如下命令时:


刀ssh“$CHEF\u搜索\u查询”交互式\
--config.rb\
--ssh网关$JUMPBOX\u IP\
--ssh用户$ssh\u用户\
--属性“cloud.public\u ipv4”


然后与目标主机建立N个交互式ssh会话

只需为客户端节点获取正确的登录凭据即可。我通过添加ssh-i“name:*”

no.来修复此问题。如果我不声明-a ipaddress。。它将使用fqdn,我没有应用任何dns。你仍然会得到这样的信息:“对于用户siegfried@ubuntu.gateway.2wire.net@net“如果您运行‘刀子显示节点chefnode-a ipaddress’,会显示什么?”?siegfried@ubuntu:~/chef repo$knife node show chefnode-a ipaddress chefnode:ipaddress:192.168.1.73我不知道为什么会有两个ip地址。您的系统上是否有某种类型的ssh别名配置,可能会添加额外的信息?谢谢,这确实解决了此问题,但如果您有办法不以明文形式写入密码,请共享相同的问题。。我用的是a-I键。。。但该文件不存在,这会产生相同的错误。在尝试这个之前。。。是否可以尝试正常的ssh-i密钥user@host? 如果失败了,这个奇怪的输出今天把我送进了兔子洞,哈哈。。。原来我在
刀[:identity\u文件]
值中有一个输入错误,最好向Chef Lol发送一份bug报告/PR。。。两年过去了,这仍然让人们陷入兔子洞(比如我)…这是我的答案。键入ssh add是不够的。我必须指定所有SSH连接到的机器的所有密钥。一旦他们都装进钥匙链,双user@foo@福事消失了,回答得很好;仍然必须输入密码,但至少它不会保留在历史记录中(而是在enteryoupassword:命令中)。仍然不确定为什么会存在这个问题,因为我可以轻松地将ssh连接到所有框中,并正确地设置chef服务器(或者我是这么认为的)。谢谢