在 serverspec 中停止 SSH 密码提示
Stop SSH password prompts in serverspec
我在一个有身份验证令牌的环境中,因此通常不需要 SSH 密码。我的 serverspec 测试总是要求我输入密码。有什么办法可以避免这种情况吗?
不需要密码:
$ ssh atlspf01
newatson@atlspf01:~$
然而,在 serverspec
$ 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 密钥。
在您的配置中,您只将有关用户的信息传递给 ssh_options
假设您的目标主机存储在环境变量 TARGET_HOST
中,用户名存储在 USERNAME
中,您应该这样做:
set :ssh_options, Net::SSH::Config.for(ENV['TARGET_HOST']).merge(user: ENV['USERNAME'])
我在一个有身份验证令牌的环境中,因此通常不需要 SSH 密码。我的 serverspec 测试总是要求我输入密码。有什么办法可以避免这种情况吗?
不需要密码:
$ ssh atlspf01
newatson@atlspf01:~$
然而,在 serverspec
$ 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 密钥。
在您的配置中,您只将有关用户的信息传递给 ssh_options
假设您的目标主机存储在环境变量 TARGET_HOST
中,用户名存储在 USERNAME
中,您应该这样做:
set :ssh_options, Net::SSH::Config.for(ENV['TARGET_HOST']).merge(user: ENV['USERNAME'])