使用SSH和Ruby连接到交换机

时间:2013-05-06 17:55:59

标签: ruby ssh

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

putty

交换机配置中的“通过密码进行SSH用户身份验证”选项已禁用,启用它不是一个选项。

我最近的两次尝试:

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错误。任何解决方案?

1 个答案:

答案 0 :(得分:3)

您有两种选择:

设置SSH密钥:这种方式非常理想,因为它不需要硬编码密码。为此,您需要生成密钥并编辑SSH配置以进行无密码登录。以下是一个示例教程HOWTO: set up ssh keys

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

硬编码示例:

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