Ruby serverspec中的停止SSH密码提示
我所处的环境具有身份验证令牌,因此通常不需要SSH密码。我的serverspec测试总是要求我输入密码。有没有办法防止这种情况 无需密码:Ruby serverspec中的停止SSH密码提示,ruby,net-ssh,serverspec,Ruby,Net Ssh,Serverspec,我所处的环境具有身份验证令牌,因此通常不需要SSH密码。我的serverspec测试总是要求我输入密码。有没有办法防止这种情况 无需密码: $ ssh atlspf01 newatson@atlspf01:~$ 然而,在服务器规范中 $ rake spec Password: spec_helper.rb中的相关代码 require 'serverspec' require 'net/ssh' set :backend, :ssh ... set :host, ENV['TARGET_HO
$ 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身份验证(带mic的gssapi)。使用ssh::ssh::kerberos或使用ssh密钥。在您的配置中,您只将有关用户的信息传递给
ssh\u选项
假设您的目标主机存储在环境变量target\u host
中,用户名存储在username
中,您应该执行以下操作:
set:ssh\u options,Net::ssh::Config.for(ENV['TARGET\u HOST'])。merge(user:ENV['USERNAME'])
它按原样连接到正确的主机。这是我试图避免的密码提示。@neil使用上面的答案,它仍然需要密码还是抱怨sudo密码?使用上面的答案,我仍然得到提示“密码:”。我认为这是针对SSH的,因为如果我提供了错误的密码,就会导致SSH身份验证失败。@neil(ENV['TARGET_HOST'))的Net::SSH::Config.for(ENV['TARGET_HOST'))的输出是什么?在我的系统中,我得到如下信息:{:auth_methods=>[“无”、“公钥”、“密码”、“键盘交互”],:send_env=>[/^LANG$/,/^LC_CTYPE$/,/^LC_NUMERIC$/,/^LC_TIME$/,/^LC_COLLATE$/,/^LC_MONETARY$/,/^LC_MESSAGES$/])和serverspec工作时不需要我输入密码。所以我想你应该检查一下auth_方法。看起来和你的一样:{:auth_方法=>[“无”,“公钥”,“密码”,“键盘交互],:send_env=>[/^LANG$/,/^LC_CTYPE$/,/^LC_数值$,/^LC_时间$/,/^LC_校对$/,/^LC_货币$/,/^LC_消息$/}