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 它开始工作了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |