使用发布ssh密钥通过ssh发送命令,没有密码

时间:2016-06-26 10:50:26

标签: ruby authentication ssh

我可以通过ssh将命令发送到具有登录名和密码的服务器,如下所示:

  Net::SSH.start("1.2.3.4", "user_name", password: "1234") do |ssh|
    res = ssh.exec!("ls")
  end

但是,如果我想避免提供密码,并且如果我已将我的公共ssh密钥添加到该服务器,我该如何删除密码?我应该只是从函数调用中删除它还是我应该让服务器知道我想通过ssh公钥进行身份验证?

1 个答案:

答案 0 :(得分:0)

Net::SSH.start("1.2.3.4", "user_name", keys: ['~/.ssh/id_rsa.pub']) do |ssh|
  res = ssh.exec!("ls")
end

如果上述内容对您不起作用,请执行以下操作:

Net::SSH.start("1.2.3.4", "user_name", 
               keys: ['~/.ssh/id_rsa.pub'],
               # host_key: "ssh-rsa", # default value
               # encryption: "blowfish-cbc", # default value
               verbose: :debug
) do |ssh|
  res = ssh.exec!("ls")
end

看看有什么不对。