在 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#start
(Net::SFTP#start
推迟)。
【讨论】:
谢谢,我在同一页上完全看到了keys
,而忽略了key_data
。以上是关于在 Heroku 上存储 SSH 密钥以通过 SFTP 将 Rails 应用程序连接到远程的主要内容,如果未能解决你的问题,请参考以下文章
一个 PowerShell SSH 可以不将密钥存储在磁盘上吗?