我需要使用SSH和Ruby连接到思科交换机。我遇到的问题是认证不同。用腻子我这样做:进入“登录为”(任意值,没有一致),那么它要求“用户名”和“密码”,这样的画面:使用SSH和Ruby连接到交换机
选项“SSH交换机配置中的用户身份验证通过密码被禁用并且启用它不是一个选项。
我的最后两个尝试:
1使用net-SSH
Net::SSH.start(CISCO, USER) do |ssh|
ssh.exec("echo hi")
end
结果:净:: SSH :: AuthenticationFailed
2使用net-SSH远程登录
tn = Net::SSH::Telnet::new("Host" => CISCO,
"Timeout" => 60,
"Prompt" => /^\login as:/)
tn.cmd("\n") { |c| print c }
tn.cmd("#{USER}\n") { |c| print c }
tn.cmd("#{PASS}\n") { |c| print c }
tn.print("echo oi") { |c| print c }
tn.close
结果:Net :: SSH :: AuthenticationFailed
我想我需要打开一个服务器的通道,并输入登录名,用户名和密码作为命令,但每次我收到AuthenticationFailed错误。任何解决方案
@ruba是使用SSH密钥进行验证的选项?通常对登录名和密码进行硬编码并不是最佳选择。 – user2276204 2013-05-06 18:17:27
@ user2276204我无法启用此功能,因为我正在处理超过3k个开关。我需要使用默认配置=/ – ruda 2013-05-06 18:27:14
您无法比较如何使用Putty或其他SSH客户端来使用Net :: SSH等库。像Putty这样的应用程序中有很多特殊的代码来处理在各种SSH服务器中找到的特性,而且它不在Net :: SSH使用的底层SSH库中。另外,从来之不易的经验中,我们发现思科的SSH实施因设备操作系统的差异而在设备间发生变化。您还需要添加“期望”功能,因为在启用特权模式时提示会发生变化。 – 2013-05-06 18:59:21