2013-05-06 107 views
1

我需要使用SSH和Ruby連接到思科交換機。我遇到的問題是認證不同。用膩子我這樣做:進入「登錄爲」(任意值,沒有一致),那麼它要求「用戶名」和「密碼」,這樣的畫面:使用SSH和Ruby連接到交換機

putty

選項「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錯誤。任何解決方案

+1

@ruba是使用SSH密鑰進行驗證的選項?通常對登錄名和密碼進行硬編碼並不是最佳選擇。 – user2276204 2013-05-06 18:17:27

+0

@ user2276204我無法啓用此功能,因爲我正在處理超過3k個開關。我需要使用默認配置=/ – ruda 2013-05-06 18:27:14

+0

您無法比較如何使用Putty或其他SSH客戶端來使用Net :: SSH等庫。像Putty這樣的應用程序中有很多特殊的代碼來處理在各種SSH服務器中找到的特性,而且它不在Net :: SSH使用的底層SSH庫中。另外,從來之不易的經驗中,我們發現思科的SSH實施因設備操作系統的差異而在設備間發生變化。您還需要添加「期望」功能,因爲在啓用特權模式時提示會發生變化。 – 2013-05-06 18:59:21

回答

3

你有兩個選擇:

安裝SSH密鑰:這種方式是理想的,因爲它不需要硬編碼密碼。要做到這一點,你需要生成密鑰,並編輯密碼的登錄你的SSH配置下面是一個例子教程,HOWTO: set up ssh keys

硬編碼密碼:你可以做到這一點通過爲用戶添加密碼在您的SSH連接

硬編碼例如:

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

爲什麼codding snip在這裏不起作用? – fotanus 2013-05-06 20:00:51

+0

不知道,它似乎不喜歡代碼上方的編號列表。我能夠通過刪除列表來「修復」它。 – 2013-05-06 20:47:06

+0

@에이바謝謝;-) – fotanus 2013-05-06 21:40:33