首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过现有SOCKS 5代理的FTPS

通过现有SOCKS 5代理的FTPS
EN

Stack Overflow用户
提问于 2022-10-05 20:09:11
回答 1查看 60关注 0票数 0

我正试图在SOCKS 5隧道上创建一个Ruby脚本FTPS连接,这是我通过Putty应用程序打开的。

我已经成功地用FileZilla测试了它的工作原理:

但是很难配置Ruby来使用SOCKS连接。

我试过:

设置SOCKS服务器环境变量:ENV["SOCKS_SERVER"] = "127.0.0.1:9090"

  • Using Sockify命令行:socksify_ruby localhost 9090 .\gp_mf_ftp.rb""

  • Using dress-socks gem:DressSocks::Socket.new('127.0.0.1', '9090', socks_username: nil, socks_password: nil, socks_server: nil, socks_port: nil, socks_version: '5')

没有运气-不知道如何排除下一个步骤。

运行Windows 10;使用Ruby3.1。打开我还没尝试过的新想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-25 19:45:07

我找到了一个解决方案,使用了dress_socks gem和下面的猴子区:

代码语言:javascript
复制
$socks_server = 'x.x.x.x'
$socks_port   = 'xxxx'

#https://github.com/ruby/net-ftp/blob/master/lib/net/ftp.rb#L366
# #monkey patch to use dress socks socket:
class Net::FTP   
  def open_socket(host, port) # :nodoc:
    puts "ignoring passed host: #{host}" unless host.eql?(@host)
    puts "socks5: #{$socks_server}:#{$socks_port}"
    puts "opening socket: #{@host}:#{port}"
    return DressSocks::Socket.new(@host, port, 
      socks_server: $socks_server, socks_port: $socks_port)
  end
end

问题是https://github.com/ruby/net-ftp/blob/332f431b8e15ca26335cb2e75417e7dcbe7d4a5a/lib/net/ftp.rb#L1406

默认情况下,FTP gem查找连接套接字连接的主机IP地址,这是SOCKS服务器,而不是FTP主机。使用实例变量@host而不是传入的主机值确保其使用正确的IP地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73965810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档