使用SSH和Ruby连接到交换机
我需要用SSH和Ruby连接到Cisco交换机。我遇到的问题是身份验证是不同的。使用PuTTY时,我会这样做:输入“登录身份”(任意值,无一致性),然后要求输入“用户名”和“密码”,如下屏幕: 交换机配置中的选项“SSH用户密码身份验证”已禁用,启用它不是一个选项 我最后的两次尝试: 1使用netssh使用SSH和Ruby连接到交换机,ruby,ssh,Ruby,Ssh,我需要用SSH和Ruby连接到Cisco交换机。我遇到的问题是身份验证是不同的。使用PuTTY时,我会这样做:输入“登录身份”(任意值,无一致性),然后要求输入“用户名”和“密码”,如下屏幕: 交换机配置中的选项“SSH用户密码身份验证”已禁用,启用它不是一个选项 我最后的两次尝试: 1使用netssh Net::SSH.start(CISCO, USER) do |ssh| ssh.exec("echo hi") end 结果:Net::SSH::AuthenticationFai
Net::SSH.start(CISCO, USER) do |ssh|
ssh.exec("echo hi")
end
结果:Net::SSH::AuthenticationFailed
2使用Net SSH Telnet
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错误。有解决方案吗?您有两种选择:
设置SSH密钥:这种方式非常理想,因为它不需要硬编码密码。要做到这一点,您需要生成密钥并编辑SSH配置,以实现无密码登录。下面是一个示例教程
硬编码密码:可以通过在SSH连接中添加用户的密码来实现此目的
硬编码示例:
Net::SSH.start(CISCO, USER, :password => PASSWORD) do |ssh|
ssh.exec("echo hi")
end
@ruba是否使用SSH密钥作为身份验证选项?通常,硬编码登录名和密码不是最好的选择。@user2276204我无法启用此功能,因为我使用的交换机超过3k。我需要使用默认的config=/您无法比较使用Putty或其他SSH客户机与使用诸如Net::SSH之类的库所做的事情。在Putty等应用程序中有很多特例代码,用于处理各种SSH服务器中发现的特性,而Net::SSH使用的底层SSH库中没有。另外,根据来之不易的经验,我们发现Cisco的SSH实现会因操作系统的不同而在不同的设备之间发生变化。您还需要添加一个“Expect”功能,因为当您启用特权模式时,提示会发生变化。不知道,它似乎不喜欢代码上方的编号列表。我可以通过删除列表来“修复”它。