使用Net :: SSH :: Gateway设置隧道(挂在.new)
就像在使用net / ssh / gateway建立到mysql的ssh隧道一样 ,我正在尝试使用Net :: SSH :: Gateway建立到远程服务器的隧道以进行端口转发。 但是我在这个过程中遇到了困难! 🙂
TL; DR
如何调整OpenSSL和Net :: SSH :: Gateway.new()以便隧道连接到远程服务器?
什么有用……
我可以通过在后台启动ssh进程来设置隧道,如下所示:
remote_addr = remote_user = ssh -f -N -L 3307:#{remote_addr}:3306 #{remote_user}
并在我的rails代码中:
# config/database.yml ... remote_db: adapter: mysql2 database: username: password: host: 127.0.0.1 port: 3307
这一切都有效。
什么不……
但是当我尝试以下操作时(当然没有在后台启动ssh),它会因“拒绝连接”而失败:
>> require 'net/ssh/gateway' >> remote_addr = >> remote_user = >> gateway = Net::SSH::Gateway.new(remote_addr, remote_user, :port => 3306, :verbose => :debug) D, [2014-12-04T07:56:50.720603 #32532] DEBUG -- net.ssh.transport.session[3fe0d1587180]: establishing connection to some_remote_server.com:3306 ... then after a delay ... Errno::ECONNREFUSED: Connection refused - connect(2) for "some_remote_server.com" port 3306
我也尝试了没有端口规范(所以它使用端口22),这导致超时:
>> gateway = Net::SSH::Gateway.new(remote_addr, remote_user, :verbose => :debug) D, [2014-12-04T07:59:17.722649 #32532] DEBUG -- net.ssh.transport.session[3fe0d156efb8]: establishing connection to some_remote_server.com:22 Errno::ETIMEDOUT: Operation timed out - connect(2) for "some_remote_server.com" port 22
钥匙的位置
我怀疑OpenSSL可能没有找到我的证书。 当我在详细模式下运行ssh
时,我可以在〜/ .ssh / id_rsa中看到它提供并接受我的公钥。 但即使我明确地将我的密钥文件作为参数传递:
gateway = Net::SSH::Gateway.new(remote_addr, remote_user, :keys => ['/Users/home/.ssh/id_rsa'], :port => 3306, :verbose => :debug)
……它似乎没有什么区别。
我的问题:
- 我将哪些参数传递给
Net::SSH:Gateway.new()
以便它模拟对ssh -N -L ...
的调用ssh -N -L ...
? - 如果我收到ECONNREFUSED或ETIMEDOUT响应,因为OpenSSL无法找到我的证书,我该如何判断它在哪里?
好吧,这是一个简单修复的愚蠢问题。 尽管我很尴尬,但我发布了解决方案以防其他人认为它有用。
简而言之,如果你一直在运行这样的ssh:
remote_addr = remote_user = ssh -f -N -L 3307:#{remote_addr}:3306 #{remote_user}
你可能想要:
require 'net/ssh/gateway' gateway = Net::SSH::Gateway.new("somehost.com", "some_remote_user") port = gateway.open(remote_addr, 3306, 3307)
我在OP中获得ECONNREFUSED和ETIMEDOUT的原因仅仅是因为我试图连接到错误的服务器。
- openssl smime in ruby / rails
- 如何使用AES 256 ECB PKCS5Padding在ruby中加密数据
- CSR失败:错误解析请求ASN1错误标记值已满足(ASN:267 CRYPT_E_ASN1_BADTAG)
- 为什么在PHP中加密的东西与在Ruby中加密的相同字符串不匹配?
- Mechanize的SSL错误
- 使用rubygem访问Shopify API时出现SSL_connect错误
- OpenSSL :: SSL :: SSLError:hostname与服务器证书不匹配
- 如何在Ruby中创建双向SSL套接字
- 错误:执行gem时…(OpenSSL :: X509 :: StoreError)