1

这是一个很长的镜头,但我正在尝试向 Heroku 添加一个 ssh 密钥,以用于通过 SFTP 连接到另一台服务器:

Net::SFTP.start(HOST, USER, password: PASSWORD, keys: ['yada.pem']) do |sftp|
  @sftp = sftp
end

我最初的解决方案是将 .ssh 目录推送到 repo 并存储yada.pem在那里。keys将包括此文件的路径。

有人告诉我,一个更安全的解决方案是将密钥存储在 Heroku 的环境变量中。问题是,这会将密钥存储为字符串,我无法真正将其传递给 SFTP.start。

我可以通过几种方式解决这个问题:

  1. 有没有办法用 Ruby 将密钥作为字符串传递net/sftp
  2. 有没有办法向 Heroku 添加公钥,以便net/sftp在尝试连接到远程服务器时使用它?

谢谢

4

1 回答 1

2

您可以在键 :key_data 下的选项哈希中将键作为字符串传递(应该是一个字符串数组,其中每个元素都包含一个 PEM 格式的键)。

Net::SFTP.start(HOST, USER, password: PASSWORD, key_data: ['PEM key as string']) do |sftp|
  @sftp = sftp
end

Net::SSH#startNet::SFTP#start推迟到)。

于 2014-05-27T19:53:03.633 回答