5

尝试使用 Ruby 脚本从 Amazon EC2(Ubuntu) 实例远程传输或运行命令。我无法从 ssh 和 scp 的 ruby​​ 文档中弄清楚如何通过 .pem 文件进行身份验证

# download a file from a remote server
Net::SCP.download!("remote.host.com", "username",
"/remote/path", "/local/path",
:password => password)

我也尝试过使用命令行,但这里的问题是主机是动态的,我每次都必须验证“是”

`/usr/bin/scp -i keyfile.pem -r username@some.random.ip:/remote/path /local/path`

The authenticity of host 'some.random.ip (some.random.ip)' can't be established.
ECDSA key fingerprint is some:random:fingerprint.
Are you sure you want to continue connecting (yes/no)? yes

除了不使用命令行代码禁用 SSH 主机密钥检查之外,还有其他方法吗?或者在 net-scp 或 net-ssh gem 中是否有用于 ruby​​ 的选项?

4

3 回答 3

8

我在他们的任何文档中都没有找到的 Ruby 解决方案

Net::SSH.start( hostname, username, :keys => "/path/to/keyfile.pem" ) do|ssh|
    #process
end
于 2013-09-30T10:02:10.460 回答
2

尝试这样的命令

ssh -o StrictHostKeyChecking=no -i keyfile.pem -r username@some.random.ip

您还可以将以下行添加到 ~/.ssh/config 文件中,以避免使用 -o 命令行开关

Host *
    StrictHostKeyChecking no

注意:您可能应该将 * 替换为您访问的远程服务器的域名模式

同样也应该与scp

于 2013-09-30T08:38:33.830 回答
0

要添加到 naveed 所述的内容,例如,如果要为Net::SCP.upload!命令指定 PEM 文件,请使用:ssh散列键指定:keys散列键值:

Net::SCP.upload!("remote.host.com", "username",
  "/local/path", "/remote/path", :ssh => { :keys => "/path/to/keyfile.pem" }) do |ch, name, sent, total|
  ...
end

我从 naveed 的示例和查看文档中发现了这一点。

于 2018-01-02T21:14:30.177 回答