问题标签 [net-ssh]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1405 浏览

ruby-on-rails - Ruby Net:SSH 控制大师?

我目前有一个 Ruby (Rails) 应用程序,它需要建立很多短 SSH 连接。使用 Ruby Net::SSH 库可以正常工作,只是应用程序必须在每次我想发出命令时登录并协商密钥,这太慢了。

有没有办法使用 Ruby Net::SSH 启用 Control Master?在命令行上的测试中,这使得登录(在第一个之后)非常快,因为连接已经打开(协商密钥等)。

如果没有办法用 Net::SSH 做到这一点,任何人都可以建议一个可以做到这一点的替代库吗?

我想这一定是一个常见的要求,所以希望有人能提供帮助。

谢谢!

0 投票
3 回答
461 浏览

ruby - 使用 `authorized_keys` 与没有用户名的 Ruby 建立 SSH 连接

我已经使用authorized_keyspush 对服务器进行了身份验证,因此我可以ssh 192.168.1.101从我的系统运行命令并可以通过服务器连接。

现在,我尝试了 library ,它对我不起作用

如,这是必需的用户名字段。我想要没有用户名。

所以,我试过这个

它为我运行命令。但我想要像@output第一个示例中那样的变量中的输出。是否有任何命令或任何方式可以让我获得解决方案?

0 投票
2 回答
3149 浏览

ruby-on-rails-3 - 使用 ruby​​ gem net-ssh 配置 Juniper 路由器

我希望能够使用 ruby​​ net-ssh gem 来更改 Juniper M10i 路由器。但是,发送“配置”后,我无法发送任何配置命令。

例如,通过 ssh 登录到路由器后,我想发出以下三个命令:

使用 net-ssh 库,我尝试了以下操作但没有成功:

执行后,我得到以下输出:

那么如何在“configure”之后正确传递“show system”命令呢?

解决了:

我偶然发现了以下帖子:https ://stackoverflow.com/a/6807178/152852

0 投票
3 回答
4277 浏览

ruby - 通过 Net:SSH 出现“非绝对家”错误

有问题的代码

这将返回“非绝对的家”。“用户”实际上确实有一个主目录。一种建议的方法是使用 IdentityFile 的完整路径修改 ~/.ssh/config。这并没有解决问题。

最疯狂的部分是,如果通过 irb 或控制台调用,代码可以正常工作。当我们尝试从类方法(使用相同的代码)中调用它时,它会返回“非绝对主页”错误。

“用户”也可以毫无问题地通过命令行 ssh 进入服务器。服务器正在运行 Ubuntu。

更新

感谢@Phrogz - 解决此问题的方法是将 ENV['HOME'] 设置为 '/home/deploy'。但是,我还没有弄清楚为什么 $HOME 被设置为“。” 在服务器上。所以,在我或其他人弄明白之前,我会在没有“答案”的情况下留下这个问题。不得不手动设置 HOME 感觉更像是“黑客”而不是正确的解决方案,但它确实有效。

0 投票
1 回答
372 浏览

ruby - Net::SSH.exec 命令返回的数据是否有大小限制

我正在尝试使用以下代码列出远程机器的文件。

如果文件数量很大,则从 exec 命令返回的数据将被截断,并且只返回文件的部分列表。在我看来,有一个大小限制。任何人都知道我可以如何增加它?

0 投票
3 回答
5016 浏览

ruby-on-rails - 无法加载此类文件 -- net/ssh/authentication/agent/socket (LoadError)

如果我跑rails s

宝石文件

前一秒有效,下一秒无效。

在我尝试按照本指南修复 CKeditor 集成后,我停止了工作: https ://github.com/galetahub/ckeditor

更新

发生此错误是因为我正在使用 Capistrano 并且该 gem 需要net-ssh. net-sshgem 从 2.4 -> 2.5.0 更新,这导致了问题。

更新了我的 Gemfile:

然后跑了$ gem update net-ssh

rails s 命令的错误消失了。尚未使用 Capistrano 进行部署,因此无法确定使用部署是否存在错误。

更新 2

Capistrano 未能部署,所以这搞砸了。使用时,cap deploy我收到您在帖子开头看到的错误消息。

更新 3

升级net-ssh到,2.5.1因为在评论中有人提到2.5.0的被破坏了。升级后需求问题得到解决,但是 Capistrano 仍然不会部署。

更新 4(加上解决方法)

在下面的评论中发布了解决方法。

  • 将您的 net-ssh 版本保持在 2.5.1
  • 在使用 Capistrano 进行部署之前,请从 ~/.ssh/known_hosts 文件中删除与您的服务器相关的行
  • 您现在可以部署一次。在每次部署之前重复。
0 投票
3 回答
971 浏览

ruby - 设置 net-ssh 连接时出现 SUPPORTED_TYPE 错误

有没有人以前见过这个错误?我无法在源代码中找到对 SUPPORTED_TYPE 的任何引用...

8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:33:in 'map' 来自 /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/ lib/net/ssh/known_hosts.rb:33:in `search_in' from /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/known_hosts.rb:27:在 /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/algorithms.rb:237 的“search_for”中:在“prepare_preferred_algorithms!”中 来自 /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/algorithms.rb:120:in 'initialize' from /usr/lib/ruby/gems/ 1.8/gems/net-ssh-2.5.1/lib/net/ssh/transport/session.rb:79:在 /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5 的“新”中。 1/lib/net/ssh/transport/session.rb:79:在 /usr/lib/ruby/gems/1.8/gems/net-ssh-2.5.1/lib/net/ssh.rb 的“初始化”中: 186:在 /usr/lib/ruby/gems/1 的“新”中。
0 投票
2 回答
5409 浏览

ruby - Ruby Net-SSH-Shell 从执行中获得标准!方法

如何从.executeNet-SSH-Shell 中的方法获取标准输出

使用好的 'ol Net-SSH,这很容易

给我Tue Jun 19 23:43:53 EDT 2012

但是如果我尝试使用外壳,我会得到一个进程对象

给我#<Net::SSH::Shell::Process:0x007fc809b541d0>

我在稀疏文档中找不到任何关于如何轻松获得标准的内容。有方法,但是如果我使用该方法on_output,那似乎对我没有任何作用execute!

我也试过传递一个块来.execute!喜欢

但我仍然得到一个过程#<Net::SSH::Shell::Process:0x007fc809b541d0>

我需要一个可以使用的变量中的标准输出,并且我需要一个实际的有状态登录 shell,据我所知,准系统 Net-SSH 并没有这样做。

有任何想法吗?

编辑

按照@vikhyat的建议的相同想法,我尝试了

但是b总是空的,即使我知道命令返回结果。

0 投票
0 回答
241 浏览

ruby - Calling scp from net:ssh

Here's the setup:

I have server A, which is running my ruby scripts and servers B & C. I need to be able to transfer files from B to C.

I've experimented with using Net:SCP, but I haven't found a way to set up a transfer between the two remote servers. The best I've been able to do was go from B to A and then from A to C.

Based on some example code I've seen elsewhere, I'm trying to ssh onto B and call scp from that server:

This is not working for me. Is this even possible?

0 投票
1 回答
315 浏览

ruby-on-rails - ruby on rails net ssh strickhostkeychecking=no

嗨,我net:sshcontroller. 我可能会host name在建立连接时动态更改。但是当它第一次登录时,shell 可能会询问是否连接。由于我通过网络连接到它,我看不到任何弹出窗口询问我。因此,我阅读了 https://groups.google.com/group/comp.lang.tcl/browse_thread/thread/ca0cd6ec905eb702 并且我想"-oStrictHostKeyChecking=no"在连接到主机时添加此标签。正如我们所知,以下是 rails 中 net::ssh 的标准格式

建立连接时我会在哪里传递这个额外的参数"-oStrictHostKeyChecking=no"

我已经试过了

但它不起作用。请帮忙