Activeモードだと

500 Illegal PORT command.
ftp: bind: アドレスは既に使用中です

Passiveモードだと

227 Entering Passive Mode (0,0,0,0,234,103).
ftp: connect: 接続を拒否されました

になった。

サーバーは外部管理のもので、Passiveでの接続が保証されているか微妙だったので、Activeモードで接続する方法を探すことに。

VPC内のEC2インスタンスから外部のFTPサーバとデータ転送するときに気をつけること

完全にこの記事に救われた。

ftp.rb
require 'bundler'

require 'net/ftp'
require 'net/ftp/port_command'

ftp = Net::FTP.new('FTPサーバーのIPアドレス')
ftp.port('EIP', 10020)
ftp.login('ID', 'パスワード')

puts ftp.list

# ftp.get 'ファイル名' # データ取得する時
bundle exec ruby ftp.rb

今までろくに触ったことのなかった生のFTPをまさかの2018年に触ることになったお話でした。(触らないまま人生を終えたかった)

まぁわりと勉強になったのでよかった。