FTP-SSLに対応したWindows用コンソールクライアント

 某サイトの納品用FTPサーバが更改され、FTP-SSL(FTPS)に対応するようになる(そして非SSL接続は廃止する)との案内が来た。従来はWindows標準のFTPクライアント*1でアクセスしていたのだが、SSLには対応していない。故に、FTPSに対応したクライアントを探すことになった。そもそも、SFTPは知っているけどFTPSって何ぞや?という、私自身の理解不足もあったので、そこら辺も調べつつ対応クライアントを探した。
 

整理

FTP
File Transfer Protocol。所謂普通のFTPコマンド及びプロトコル
SFTP
SSH(Secure SHell) File Transfer Protocol。SSHの仕組みを利用したFTPコマンド及びプロトコル
RCP
Remote CoPy。Unixマシン間でのネットワークを介したファイルコピーコマンド及びプロトコル
SCP
Secure CoPy。SSHの仕組みを利用したRCPコマンド及びプロトコル
FTP-SSL(FTPS)
FTP over SSLSSLFTPの通信経路を暗号化するプロトコル

 RSHに対するSSHのように、FTPにはSFTP、RCPにはSCPがある感じだが、FTPSはそれらの関係とは異質な感じ。
 HTTPに対するHTTPSと同様に、FTPに対するFTPSと理解すれば良さそう。
 SFTPとFTPSは似て非なるものである。
 

対応クライアント

 Windowsプラットフォームで、FTPSに対応するクライアントはGUIベースではFileZillaCyberduckやNextFTPなど幾つかあるようだ。
 個人的に、過去の業務でWinSCPを利用していたことがあり、GUIだけではなくコンソールクライアントも存在することが明確なWinSCPを利用することにした。WinSCPはSCPだけではなく、FTPはもちろんSFTPもFTPSにも対応している。
osdn.jp
 

ログイン自動化

 もちろんログインに限らず、その先の転送処理なども定型化できるなら自動化可能である。ここではログイン後バイナリモードにするまでの例を示す。
 Windows標準のFTPクライアントなら、FTPコマンドの応答に対応した以下のようなスクリプト(login.ftpとする)を用意しておけば、

open HOSTNAME
USERID
PASSWORD
bin

 以下のようにオプションを指定し、FTPコマンドを起動すればログインしてバイナリモードで転送可能な状態となる。

ftp -s:login.ftp

 
 同様のことをWinSCPでFTPSホストに対して行う場合は、以下のようなスクリプト(login.winscpとする)を記述し、WinSCPを起動すればよい*2

open ftps://USERID:PASSWORD@HOSTNAME -explicit
bin
winscp /script=login.winscp

 



以上。

*1:C:\Windows\System32\ftp.exe

*2:winscp.comがコマンドラインクライアントだが、GUIクライアントのwinscp.exeも無いと動作しない