在 Heroku 上存储 SSH 密钥以通过 SFTP 将 Rails 应用程序连接到远程

Posted

技术标签:

【中文标题】在 Heroku 上存储 SSH 密钥以通过 SFTP 将 Rails 应用程序连接到远程【英文标题】:Store SSH Key on Heroku to Connect Rails App to Remote Thru SFTP 【发布时间】:2014-07-16 19:55:41 【问题描述】:

这是一个长镜头,但我正在尝试向 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。

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

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

谢谢

【问题讨论】:

【参考方案1】:

您可以在键 :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 推迟)。

【讨论】:

谢谢,我在同一页上完全看到了keys,而忽略了key_data

以上是关于在 Heroku 上存储 SSH 密钥以通过 SFTP 将 Rails 应用程序连接到远程的主要内容,如果未能解决你的问题,请参考以下文章

ssh密钥认证

SSH 公钥在“git clone”命令上被拒绝

一个 PowerShell SSH 可以不将密钥存储在磁盘上吗?

Parse Server - 如何在 Heroku 上启用 REST API 密钥

存储库访问被拒绝。通过部署密钥访问是只读的

尝试将 jenkins 与 github 连接的私有 ssh 密钥问题