我正试图在SOCKS 5隧道上创建一个Ruby脚本FTPS连接,这是我通过Putty应用程序打开的。
我已经成功地用FileZilla测试了它的工作原理:

但是很难配置Ruby来使用SOCKS连接。
我试过:
设置SOCKS服务器环境变量:ENV["SOCKS_SERVER"] = "127.0.0.1:9090"
socksify_ruby localhost 9090 .\gp_mf_ftp.rb""
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。打开我还没尝试过的新想法。
发布于 2022-10-25 19:45:07
我找到了一个解决方案,使用了dress_socks gem和下面的猴子区:
$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地址。
https://stackoverflow.com/questions/73965810
复制相似问题