【问题标题】:Ruby Net::SSH infinity wait for passwordRuby Net::SSH 无限等待密码
【发布时间】:2016-05-24 19:09:45
【问题描述】:

我有一个通过 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:

如何为这种情况设置超时或如何完全排除这种情况(引发一些错误?)

【问题讨论】:

    标签: ruby-on-rails ruby net-ssh


    【解决方案1】:

    根据documentationNet::SSH.start 方法接受一个 :non_interactive => true 选项,该选项将使您的测试(代码)失败,而不是交互式地询问密码。当然,其他非交互式身份验证选项(例如私钥)仍然有效。

    所以,试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多