加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails / net-ssh – ssh到远程服务器,在Heroku

发布时间:2020-12-17 01:57:28 所属栏目:百科 来源:网络整理
导读:我正在尝试通过Heroku使用私钥ssh到远程服务器. 我正在使用这个gem https://github.com/net-ssh/net-ssh来完成请求,并且在本地工作正常. 一切正常在本地工作的原因是因为我输入了密码短语保存了私钥.当我部署到Heroku时,我无法像在PC上那样使用代理,因此连接
我正在尝试通过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

它开始工作了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读