簡體   English   中英

Ruby Net :: SSH Infinity等待密碼

[英]Ruby Net::SSH infinity wait for password

我有一個簡單的功能,可以通過ssh運行一些命令,這是一個示例:

...
Net::SSH.start( self.host, self.user, config: true, keys: [self.pem_key] ) do| ssh |
  result = ssh.exec! self.command
  ...

除了我忘記配置遠程主機(例如,在〜/ .ssh / authorized中添加密鑰)並且我的應用卡在密碼請求中的情況下,它可以正常工作:

Completed 200 OK in 246ms (Views: 238.1ms | ActiveRecord: 4.3ms)

Started POST "/xxx" for ::1 at 2016-05-24 13:43:11 +0300
Processing by XXX::XXXController#run_now as JS
Parameters: {"id"=>"2"}
XXX::Check Load (0.3ms)  SELECT  ...
(0.1ms)  BEGIN
SQL (0.3ms)  UPDATE ...
(0.3ms)  COMMIT
Text will be echoed in the clear. Please install the HighLine or Termios libraries to suppress echoed text.
some_user@some_host's password:

如何為這種情況設置超時或如何完全排除這種情況(引發一些錯誤?)

根據文檔Net::SSH.start方法接受一個:non_interactive => true Net::SSH.start :non_interactive => true選項,這會使您的測試(代碼)失敗,而不是交互地要求輸入密碼。 當然,其他非交互式身份驗證選項(例如私鑰)仍然可以使用。

因此,請嘗試以下操作:

Net::SSH.start(self.host, self.user, config: true, non_interactive: true, keys: [self.pem_key]) do| ssh |
  ...
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM