【问题标题】:Stop SSH password prompts in serverspec在 serverspec 中停止 SSH 密码提示
【发布时间】:2015-06-16 02:16:46
【问题描述】:

我在一个带有身份验证令牌的环境中,因此通常不需要 SSH 密码。我的 serverspec 测试总是要求我输入密码。有没有办法防止这种情况发生?

无需密码:

$ ssh atlspf01
newatson@atlspf01:~$

然而,在服务器规范中

$ rake spec
Password:

spec_helper.rb中的相关代码

require 'serverspec'
require 'net/ssh'

set :backend, :ssh
...
set :host, ENV['TARGET_HOST']
set :ssh_options, :user => ENV['USERNAME']

更新:问题是 net::ssh 不支持 Kerberos 身份验证(gssapi-with-mic)。使用 ssh::ssh::kerberos 或使用 ssh 密钥。

【问题讨论】:

    标签: ruby net-ssh serverspec


    【解决方案1】:

    在您的配置中,您只将有关用户的信息传递给ssh_options

    假设你的目标主机存储在环境变量TARGET_HOST中,用户名存储在USERNAME中,你应该这样做:

    set :ssh_options, Net::SSH::Config.for(ENV['TARGET_HOST']).merge(user: ENV['USERNAME'])

    【讨论】:

    • 它按原样连接到正确的主机。这是我试图避免的密码提示。
    • @neil 使用上面的答案,它仍然需要密码还是抱怨 sudo 密码?
    • 通过上面的答案,我仍然得到提示'密码:'。我认为这是针对 SSH 的,因为如果我提供了错误的密码,我会遇到 SSH 身份验证失败。
    • @neil Net::SSH::Config.for(ENV['TARGET_HOST']) 的输出是什么?在我的系统中,我得到如下信息: {:auth_methods=>["none", "publickey", "password", "keyboard-interactive"], :send_env=>[/^LANG$/, /^LC_CTYPE$ /、/^LC_NUMERIC$/、/^LC_TIME$/、/^LC_COLLATE$/、/^LC_MONETARY$/、/^LC_MESSAGES$/]} 和 serverspec 无需我输入密码即可工作。所以我想你应该检查一下 auth_methods。
    • 看起来和你的一样:{:auth_methods=>["none", "publickey", "password", "keyboard-interactive"], :send_env=>[/^LANG$/, /^LC_CTYPE$/, /^LC_NUMERIC$/, /^LC_TIME$/, /^LC_COLLATE$/, /^LC_MONETARY$/, /^LC_MESSAGES$/]}
    猜你喜欢
    • 2018-05-25
    • 2013-07-04
    • 2021-03-23
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    相关资源
    最近更新 更多