1

我需要使用 SSH 和 Ruby 连接到 Cisco 交换机。我遇到的问题是身份验证不同。使用 PuTTY 我会这样做:输入“登录身份”(任何值,不一致),然后它会询问“用户名”和“密码”,如下面的屏幕:

油灰

交换机配置中的“SSH User Authentication by Password”选项被禁用并且不能启用它。

我最后的两次尝试:

1 使用网络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 错误。有什么解决办法吗?

4

1 回答 1

3

你有两个选择:

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

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

硬编码示例:

Net::SSH.start(CISCO, USER, :password => PASSWORD) do |ssh|
  ssh.exec("echo hi")
end
于 2013-05-06T19:56:58.123 回答