[英]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.