使用 Ruby 和 net-ssh,如何使用 Net::SSH.start 的 key_data 参数进行身份验证?

2023-11-23

我已经阅读了 net-ssh 文档,但仍然感到困惑。我可以手动进行身份验证(使用 ssh -i ...),也可以将密钥放入文件中并使用 :keys 参数。但是,我不想使用 :keys 参数,我想使用 :key_data 参数。谁能举一个可行的例子吗?由于某种原因,直接将字符串输入 :key_data 不起作用,并且它会给出错误:“既没有 PUB key 也没有 PRIV key:: 嵌套 asn1 错误”。当然,我用 google 搜索了一下,它基本上告诉我要确保密钥是 PEM 格式。当然是这样。有任何想法吗?如果需要的话我可以提供更详细的信息...


我看到这个问题已经很老了,但无论如何我都会把答案告诉你,以防万一我遇到了同样的问题并且我刚刚解决了它。

请注意,在以下代码中,包含 RSA 密钥的字符串在任何地方都没有缩进。密钥的第二行中没有任何前导空格。当我粘贴密钥时,TextMate 将其放在那里。我将其删除,它就像一个魅力。

#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'

HOST = '172.20.0.31'
USER = 'root'

KEYS = [ "-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAqccvUza8FCinI4X8HSiXwIqQN6TGvcNBJnjPqGJxlstq1IfU
kFa3S9eJl+CBkyjfvJ5ggdLN0S2EuGWwc/bdE3LKOWX8F15tFP0=
-----END RSA PRIVATE KEY-----" ]

Net::SSH.start( HOST, USER, :key_data => KEYS, :keys_only => TRUE) do|ssh|
result = ssh.exec!('ls')
puts result
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ruby 和 net-ssh,如何使用 Net::SSH.start 的 key_data 参数进行身份验证? 的相关文章

随机推荐