gpt4 book ai didi

ruby-on-rails - 带有 proxycommand 的 Ruby net-ssh 导致卡住

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:09 25 4
gpt4 key购买 nike

我想通过另一台使用 ruby​​ 的计算机连接到远程计算机。

这个方案如下:

本地 -> 代理 -> 远程

我有这段代码可以直接访问:

require 'net/ssh'
Net::SSH.start(remote_host, remote_user) do |ssh|
puts ssh.exec!'hostname'
end

但是,当我尝试使用代理时,命令“主机名”被执行并正确,但随后代码卡住,如果我调用 ssh.close 也是如此。

代码如下:

require 'net/ssh'
require 'net/ssh/proxy/command'

proxy_cmd = Net::SSH::Proxy::Command.new('ssh proxy_user@proxy_host nc %h %p')
Net::SSH.start(remote_host, remote_user, :proxy => proxy) do |ssh|
puts ssh.exec!'hostname'
end

多亏了 rsa key ,登录无需密码即可完成。并且 proxycommand 正在运行(我之前在 bash 中使用它)

有人知道我做错了什么吗?

非常感谢您的关注,

编辑:这是日志中的最后一行,它在那里阻塞:

I, [2013-10-16T23:01:19.304778 #3785]  INFO -- net.ssh.connection.session[4555128]: closing remaining channels (0 open)

最佳答案

我刚刚遇到了同样的问题 - 命令行 ssh 正在工作,而 net/ssh 在使用 proxycommand 时卡在我身上。

调试 net/ssh 使我达到:https://github.com/net-ssh/net-ssh/blob/master/lib/net/ssh/transport/session.rb#L113整个事情都卡在套接字的 .close 调用上。

我不确定是什么原因造成的,但是给 nc 命令添加超时似乎已经解决了这个问题:

ProxyCommand ssh proxy_server@proxy_server nc -q 1 %h %p

关于ruby-on-rails - 带有 proxycommand 的 Ruby net-ssh 导致卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19400903/

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