使用SSH和Ruby连接到交换机

我需要使用SSH和Ruby连接到思科交换机。 我遇到的问题是身份validation不同。 使用PuTTY我喜欢这样:输入’login as’(任何值,没有一致性)然后它要求’User Name’和’Password’,就像这个屏幕:

油灰

禁用交换机配置中的“通过密码进行SSH用户身份validation”选项,并且无法启用它。

我最近的两次尝试:

1使用Net-SSH

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配置以进行无密码登录。以下是一个示例教程, HOWTO:设置ssh密钥

硬编码密码 :您可以通过在SSH连接中为用户添加密码来实现此目的

硬编码示例:

 Net::SSH.start(CISCO, USER, :password => PASSWORD) do |ssh| ssh.exec("echo hi") end