yuu_nkjm blog
2011-12-03(Sat) [長年日記]
[FTP][openSUSE] コマンドラインからFTPSでFTPサーバ上のデータを取得
対話型だと自動処理に不向きなので,コマンドラインでFTPサーバからデータを取得したい.さくらインターネットでftpsが使える様になったということなので,ftpsによる接続を試みた.ncftpではftpsを扱えない様なので,FTPクライアントをlftpに代えた.
「Explicitモード(?)」の節が,うまくいったコマンドについて書いた部分である.
Implicitモード(?)
lftp -u user,passwd -e "mirror --only-newer --verbose /home/hoge/ /srv/www/repos/hoge" ftps://hoge.sakura.ne.jp:21
sakuraサーバはFTPSに990番ポートでなく21番ポートを使う様なので,ポート番号を指定する.
lftp -u hoge -e "debug 12" ftps://hoge.sakura.ne.jp:21 lftp hoge@hoge.sakura.ne.jp:~> ls ---- dns cache hit ---- hoge.sakura.ne.jp (xxx.xx.xx.xxx) ポート 21 に接続中 `ls' (現在 0 バイト) [FEAT negotiation...] **** gnutls_handshake: A TLS packet with unexpected length was received. ---- コントロールソケットを閉じています ls: 致命的エラー: gnutls_handshake: A TLS packet with unexpected length was received.
上記の様なエラーが出て接続出来なかった.何でだろ….何かExplicitとImplicitとかいってた辺りが怪しい気がする.ひとまずwikipediaでも見てみる.
暗号化の種類
FTPSには、認証コマンド(AUTHコマンド)実行後に暗号化通信を開始するExplicitモードと、FTPSサーバ接続開始時点から暗号化通信を開始するImplicitモードの2種類が存在する。
Explicitモード
サーバに接続した後にクライアントがAUTHコマンドを実行して、使用するプロトコル(SSLまたはTLS)のネゴシエーションをおこない、適合したプロトコルでのハンドシェイク完了後に暗号化された通信がおこなわれる。 つまりExplicitモードの場合、クライアントがAUTHコマンドを実行しなければ通常のFTPとして機能する。
Implicitモード
サーバに接続した直後にSSLまたはTLSによるハンドシェイクがおこなわれる。 Implicitモードで動作するサーバに接続する場合、クライアントはサーバが採用している暗号化プロトコルに適合したFTPSクライアントソフトを使用する必要がある。 また、データ転送チャネル(PORTまたはPASVコマンドで作成されるチャネル)での通信を暗号化する場合、PROTコマンドを用いて保護レベルをP (Private) に設定する必要がある。
さくらインターネットの説明サイトにExplicitモードで接続する様に書いてあった.上記の蹴られ方を見ると,さっきはImplicitモードで接続しようとしていることになるのかな.「Explicitモードの場合、クライアントがAUTHコマンドを実行しなければ通常のFTPとして機能する」って書いてあるから,いきなりftpsを指定するのはこの説明に合わない気がする.語感としては,ftpsって指定する方がEplicitに思えるけど….
Explicitモード(?)
ユーザ毎の設定は~/.lftprcに,サーバ全体のlftpの設定は/etc/lftp.confに書く.
# ~/.lftprc set ftp:ssl-auth TLS set ftp:ssl-force true set ftp:ssl-allow yes set ftp:ssl-protect-list yes set ftp:ssl-protect-data yes set ftp:ssl-protect-fxp yes # set ssl:verify-certificate no サーバによってはこれが必要になるケースもある?
~/.lftprcに上記の様に記述し,以下のコマンドを実行した.先ほどと違うのは,ftpsではなくftpを指定した点である.
lftp -u hoge -e "debug 12" ftp://hoge.sakura.ne.jp lftp hoge@hoge.sakura.ne.jp:~> ls (snip) ---- hoge.sakura.ne.jp (xxx.xx.xx.xxx) ポート 21 に接続中 <--- 220 ProFTPD 1.3.3c Server (SAKURA Internet FTP Server) [xxx.xx.xx.xxx] ---> FEAT (snip) ---> AUTH TLS <--- 234 AUTH TLS successful (snip)
"AUTH TLS successful"と出てるし,FTP over SSL/TLSが出来ていることが分かる.
ミラーリング用のスクリプト
# hoge-bkup.conf set ftp:ssl-auth TLS set ftp:ssl-force true set ftp:ssl-allow yes set ftp:ssl-protect-list yes set ftp:ssl-protect-data yes set ftp:ssl-protect-fxp yes # set ssl:verify-certificate no サーバによってはこれが必要になるケースもあるようだ. # 接続先のポート番号はftp://xxxxの後ろに:ポート番号で指定する. open -u hoge,passwd ftp://hoge.sakura.ne.jp debug 12 -o /tmp/lftp_hoge_bkup.log mirror --only-newer --verbose /home/hoge /srv/www/hoge
上記の様なスクリプトを作成し,lftpの-fオプションで渡して実行するようにした.パスワードを書き込むときは,そのファイルのアクセス権限に十分に注意する.
lftpのオプションは以下.-fと他のオプションの併用は出来ないようだ.
lftp -help 使い方: lftp [OPTS]`lftp' は rc ファイルを読み込んだあと最初に実行されるコマンドです -f ファイルで指定されたコマンドを実行し終了する -c コマンドを実行して終了する --help このヘルプを表示して終了する --version lftp のバージョンを表示して終了する 他のオプションは `open' コマンドのものと同じです -e 選択のすぐあとに指定のコマンドを実行する -u [, ] 認証で指定のユーザ/パスワードを使う -p 接続に指定のポートを使う ホスト名、URL あるいはブックマーク名
備考
残った疑問
lftp -v Libraries used: Readline 6.1
lftpのバージョン情報を表示させるとこんな感じ.ここでOpenSSLモジュールが組み込まれていると表示されないとFTPSが使えないと書いてある記事を見かけたのだが,どうなんだろう.
ncftp (ncftpget)
昔はncftpを使っていた.
ncftpget -u user -p 'passwd' -d /home/hoge/tmp/ncftp_hoge_bkup.log -T -R hoge.sakura.ne.jp /srv/www/repos/hoge /home/hoge
- http://b.hatena.ne.jp/entry/114950190/comment/taka... ×5
- http://tweetedtimes.com/sszk/rss.xml ×1
- http://b.hatena.ne.jp/yuiseki/favorite?mode=rss ×1
- http://b.hatena.ne.jp/KoshianX/favorite.rss ×1
- http://b.hatena.ne.jp/ya--mada/rss ×1
- https://www.google.co.jp/ ×9932
- http://d.hatena.ne.jp/nk87/20121015/1350293643 ×281
- https://www.google.com/ ×245
- http://t.co/YXcIqszVlR ×89
- https://www.bing.com/ ×52
- https://www.google.co.jp/ ×47
- http://search.yahoo.co.jp/ ×27
- http://d.hatena.ne.jp/nk87/touch/20121015/13502936... ×12
- https://www.google.com.ph/ ×5
- https://www.google.com.sg/ ×5
- https://www.google.com/search ×4
- http://vm1/ ×4
- https://www.google.co.in/ ×4
- https://www.google.com/webhp?hl=ja ×4
- http://search.fenrir-inc.com/?hl=ja&channel=sleipn... ×3
- https://www.google.co.th/ ×3
- http://search.fenrir-inc.com/?q=FTPs 接続コマンドライン&hl=... ×3
- http://search.fenrir-inc.com/?hl=ja&channel=snapcr... ×3
- http://ysearch.luna.tv/search.aspx?puid=109&client... ×3
- http://search.fenrir-inc.com/?hl=ja&channel=sleipn... ×3
- http://d.hatena.ne.jp/yosiwo/ ×2
- http://search.fenrir-inc.com/?q=ftps コマンド&hl=ja&sa... ×2
- http://ysearch.luna.tv/search.aspx?keyword=lftp コマ... ×2
- http://seesaawiki.jp/w/kou1okada/d/lftp ×2
- http://twilog.org/h_okumura ×2
- http://search.fenrir-inc.com/?q=FTPS 接続方法 cmd&hl=j... ×2
- http://websearch.excite.co.jp/?q=FTP over SSL/TLS ... ×2
- https://www.google.co.jp/webhp?sourceid=chrome-inst... ×2
- https://www.google.co.uk/ ×2
- http://search.fenrir-inc.com/?q=lftp ssl&hl=ja&saf... ×2
- http://jp.hao123.com/yahoo-search-demo-sample?quer... ×2
- http://project2.iamjava.net/trac/shufoox/ticket/20... ×2
- https://www.google.co.id/ ×2
- http://search.fenrir-inc.com/?q=centOS lftp ftps l... ×2
- http://twilog.org/h_okumura/date-131208 ×2
- http://b.hatena.ne.jp/search/tag?q=lftp ×2
- https://www.google.mv/ ×2
- https://www.google.ca/ ×1
- http://search.fenrir-inc.com/?q=ftpコマンド ftps&hl=ja... ×1
- http://search.fenrir-inc.com/?q=windows2008 ftp ss... ×1
- http://tabtter.jp/app/client.cgi?runtime=138655102... ×1
- https://www.google.com.vn/ ×1
- https://www.google.co.il/ ×1
- https://search.yahoo.co.jp/ ×1
- http://webmail.office.pref.wakayama.lg.jp/am_bin/a... ×1
- http://twipple.jp/?sticky=0 ×1
- http://twilog.org/h_okumura/search?word=ftps&ao=a ×1
- http://search.fenrir-inc.com/?q=lftp windows CMD&h... ×1
- http://tabtter.jp/app/client.cgi?runtime=138650341... ×1
- http://search.fenrir-inc.com/?q=ftp bat win 7 &hl... ×1
- https://duckduckgo.com/ ×1
- https://www.google.co.kr/ ×1
- https://www.google.co.jp/webhp?source=search_app ×1
- http://search.fenrir-inc.com/?q=lftprc&hl=ja&safe=... ×1
- http://search.fenrir-inc.com/?q=lftp FEAT&hl=ja&sa... ×1
- https://www.google.com.ar/ ×1
- http://search.fenrir-inc.com/?q=lftprc passive&hl=... ×1
- http://sp-web.search.auone.jp/search?client=mobile... ×1
- http://twicli.neocat.jp/twicli.html ×1
- http://search.fenrir-inc.com/?q=lftp Explicit&hl=j... ×1
- http://www.search.ask.com/web?q=windows ftpコマンド ft... ×1
- http://search.fenrir-inc.com/?q=ftps クライアント linux&... ×1
- http://search.fenrir-inc.com/?q=ftpコマンド SSL TSL&hl... ×1
- http://search.fenrir-inc.com/?q=lftp ポート接続 失敗&hl=j... ×1
- http://www.search.ask.com/web?tpid=ORJ-SPE&pf=V7&o... ×1
- https://www.google.de/ ×1
- http://search.fenrir-inc.com/?q=telnet FTPS コマンドプロ... ×1
- http://search.smt.docomo.ne.jp/result?search_box=F... ×1
- http://search.fenrir-inc.com/?q=ftp ssl 接続方法 コマンド&... ×1
- https://www.google.com.au/ ×1
- http://search.fenrir-inc.com/?q=ftp linux 暗号化 コマンド... ×1
- http://search.fenrir-inc.com/?q=ftpコマンド ポート&hl=ja&... ×1
- https://www.bing.com/search?q=lftp explicit&pivot=... ×1
- http://ysearch.luna.tv/search.aspx?keyword=lftp プロ... ×1
- http://search.fenrir-inc.com/?q=Linux FTPS&hl=ja&s... ×1
- http://webcache.googleusercontent.com/search?q=cac... ×1
- http://search.fenrir-inc.com/?q=ftps コマンド&hl=ja&sa... ×1
- http://search.smt.docomo.ne.jp/result?search_box=バ... ×1
- http://wsearch.ocn.ne.jp/ocn.jsp?JP=0&PT=ocn_Simpl... ×1
- http://webcache.googleusercontent.com/search?q=cac... ×1
- http://search.fenrir-inc.com/?q=ftp ssl 接続方法 コマンド&... ×1
- https://www.google.com/url?sa=t&rct=j&q=&esrc=s&sou... ×1
- http://search.fenrir-inc.com/?q=lftp ftps&hl=ja&sa... ×1
- http://webcache.googleusercontent.com/search?hl=ja... ×1
- http://search.fenrir-inc.com/?q=ftps コマンド &hl=ja&s... ×1
- http://search.fenrir-inc.com/?q=lftp ftps&hl=ja&sa... ×1
- https://www.google.cl/ ×1
- http://webcache.googleusercontent.com/search?q=cac... ×1
- https://www.google.com/m/search ×1
- http://ysearch.luna.tv/Search/Web?keyword=lftp Lin... ×1
- https://www.facebook.com/ ×1
- http://sp-web.search.auone.jp/search?q=centos ftps... ×1
- http://sp-web.search.auone.jp/search?q=unix ftp ss... ×1
- http://t.co/6Q7ZzkEYi4 ×1
- http://search.fenrir-inc.com/?q=jm lftp&hl=ja&safe... ×1
- https://www.google.com.tw/ ×1
- http://ysearch.luna.tv/search.aspx?keyword=ftps コマ... ×1
- http://t.umblr.com/ ×1
- http://www.rasilse222.sakura.ne.jp/software_homepa... ×1
- http://search.fenrir-inc.com/?q=lftp シェル&hl=ja&saf... ×1
- ftps コマンド ×120 / FTPS コマンド ×66 / lftp ftps ×43 / FTPS コマンドライン ×19 / ftps コマンドライン ×16 / ftps コマンドプロンプト ×14 / ftps コマンド windows ×8 / FTPS コマンドプロンプト ×8 / linux ftps コマンド ×8 / FTPSコマンド ×8 / lftp ssl ×6 / lfpt FEAT negotiation ×5 / FTPs コマンド ×5 / ftp auth tls ×5 / ftp ssl接続 ×4 / ftps linux コマンド ×4 / FTP AUTHコマンド ×4 / ftps コマンド linux ×3 / AUTHコマンド lftp ×3 / ftps dosコマンド ×3 / ftpsコマンド ×3 / ftp -i -s コマンド ×3 / ftp:ssl-protect-data true ×3 / ftps 接続 コマンド ×3 / Windows コマンドプロント FTP over SSL ×3 / lftps コマンド ×3 / スカイプコマンド 蹴れる権限 ×3 / lfpt 現在 0 バイト ×3 / ftps lftp コマンド ×3 / FTPS PROT explicit ×3 / ftp ssl コマンド ×3 / lftp FTPS ×2 / ftp over ssl linux ×2 / ftp ssl tls コマンド ×2 / ftps command ×2 / Windows ftps コマンド ×2 / ftp over ssl コマンド ×2 / 234 AUTH TLS successful ×2 / `ls' (現在 0 バイト) [FEAT negotiation...] ×2 / さくら ftp コマンド ×2 / 接続FTPS コマンド ×2 / iis ftp コマンド SSL 設定 SET ×2 / ftps接続 コマンド ×2 / FTPSで送る コマンド ×2 / windows ftp sll コマンド ×2 / lftp コマンド ftps ×2 / ftpコマンドを暗号化 ×2 / ssl ソケット 接続 FTPS ×2 / AUTHコマンド ftps ×2 / ipad コマンドライン ×2 / ftps 接続コマンド ×2 / lftp ssl エラー ×2 / FTP ssl C言語 ×2 / lftp "ssl-allow" no ×2 / ftp データチャネルポート 失敗 ×2 / ftps コマンド 使い方 ×2 / lftp ftps接続 ×2 / ftp ftps ×2 / ftps lftp コマンド ポート ×2 / lftp 使い方 ×2 / lftp.conf implicit ×2 / lftp FTPSサーバー 接続 ×2 / クライアントから接続 FTPS ×2 / sftp windows コマンド ×2 / ftps クライアント linux ×2 / lftp 保護モード ×2 / lftp implicit ×2 / ftp auth ×2 / ftps クライアント接続 コマンド ×2 / linux ftps ×2 / ncftp 暗号化 ×2 / lftp コマンド 接続 ftp リナックス ×2 / linux ftpsコマンド ×2 / lftp explicit ftps ×2 / lftp コマンドライン ×2 / ftp コマンド ftps ×2 / linux FTPS ×2 / コマンドラインからFTPS ×2 / コマンドライン ftpサーバー ×2 / lftp ssl-protect-list ×2 / FTP AUTH TLS コマンド ×2 / ftps bat ×2 / "FTPS" コマンド ×2 / ftps explicitモード windows ×2 / linux ftps クライアント ×2 / FTPS AUTH ×2 / ftp コマンド auth ×2 / FTP auth コマンド ×2 / lftp ftps implicit ×2 / +コマンド ftps linux ×2 / lftp ssl-force ×2 / ftps lftp ×2 / lftp ポート ×2 / FEAT negotiation ×2 / lftp Explicit ×2 / ftps コマンド ×2 / FEAT AUTH ×2 / lftp ftp:ssl-auth ×2 / lftp ls ソケットエラー ×2 / ftp -s コマンドプロンプト オプション ×2