Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby serverspec中的停止SSH密码提示_Ruby_Net Ssh_Serverspec - Fatal编程技术网

Ruby serverspec中的停止SSH密码提示

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密码。我的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身份验证(带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_消息$/}