我需要使用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