gpt4 book ai didi

ruby-on-rails - Rails/net-ssh - 在 Heroku 中使用私钥 ssh 到远程服务器

转载 作者:行者123 更新时间:2023-12-03 00:24:28 26 4
gpt4 key购买 nike

我正在尝试通过 Heroku 使用私钥 ssh 到远程服务器。

我正在使用这个 gem https://github.com/net-ssh/net-ssh完成请求并使一切在本地正常工作。

本地一切正常的原因是因为我保存了输入密码的私钥。当我部署到 Heroku 时,我无法像 PC 上那样使用代理,因此连接失败。

我已使用 net-ssh 更改了连接设置,以不使用代理,但仍然无法使其正常运行。

最坏的情况是,我将不得不在其他地方托管的 php 中创建一个单独的 API 调用来完成此连接,但我希望我可以通过 Heroku 中的 Rails 应用程序使其工作。

这就是我目前正在做的事情:

options = {}    
options[:key_data] = ENV['LANDING_PAGE_SSH_KEY']
options[:keys_only] = true
options[:use_agent] = false
options[:verbose] = :debug
options[:port] = '18765'
options[:passphrase] = ENV['SSH_KEY_PASSPHRASE']

Net::SSH.start(ENV['SERVER_HOSTNAME'], ENV['SERVER_USERNAME'], options) do |ssh|

end

我已在全局变量中输入了私钥以及我需要的其他所有内容。这在不使用代理的情况下也可以在本地运行,但在 Heroku 上失败并显示以下消息:

[2017-07-21T19:20:35.506794 #4] DEBUG -- socket[383b2bc]: read 52 bytes
2017-07-21T19:20:35.507070+00:00 app[web.1]: D, [2017-07-21T19:20:35.507016 #4] DEBUG -- socket[383b2bc]: received packet nr 3 type 6 len 28
2017-07-21T19:20:35.507262+00:00 app[web.1]: D, [2017-07-21T19:20:35.507210 #4] DEBUG -- net.ssh.authentication.session[3fd3f610f914]: trying none
2017-07-21T19:20:35.507477+00:00 app[web.1]: D, [2017-07-21T19:20:35.507412 #4] DEBUG -- socket[383b2bc]: queueing packet nr 4 type 50 len 44
2017-07-21T19:20:35.507603+00:00 app[web.1]: D, [2017-07-21T19:20:35.507553 #4] DEBUG -- socket[383b2bc]: sent 68 bytes
2017-07-21T19:20:35.536336+00:00 app[web.1]: D, [2017-07-21T19:20:35.536194 #4] DEBUG -- socket[383b2bc]: read 52 bytes
2017-07-21T19:20:35.536472+00:00 app[web.1]: D, [2017-07-21T19:20:35.536422 #4] DEBUG -- socket[383b2bc]: received packet nr 4 type 51 len 28
2017-07-21T19:20:35.536573+00:00 app[web.1]: D, [2017-07-21T19:20:35.536526 #4] DEBUG -- net.ssh.authentication.session[3fd3f610f914]: allowed methods: publickey
2017-07-21T19:20:35.536657+00:00 app[web.1]: D, [2017-07-21T19:20:35.536612 #4] DEBUG -- net.ssh.authentication.methods.none[3fd3f6103e84]: none failed
2017-07-21T19:20:35.536749+00:00 app[web.1]: D, [2017-07-21T19:20:35.536703 #4] DEBUG -- net.ssh.authentication.session[3fd3f610f914]: trying publickey
2017-07-21T19:20:35.537566+00:00 app[web.1]: Enter passphrase for <key in memory>:Completed 500 Internal Server Error in 337ms (ActiveRecord: 1.4ms)
2017-07-21T19:20:35.538404+00:00 app[web.1]:
2017-07-21T19:20:35.538406+00:00 app[web.1]: Errno::ENOTTY (Inappropriate ioctl for device):

有什么建议吗?

最佳答案

就我而言,我需要将私钥添加到服务器的 ssh 设置中

ssh-add ~/.ssh/path-to-private-key

它开始工作了。

关于ruby-on-rails - Rails/net-ssh - 在 Heroku 中使用私钥 ssh 到远程服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45245337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com