2013-07-23 16:29:23 +0000 2013-07-23 16:29:23 +0000
17
17

LinuxのコマンドラインでFTPSサーバに接続する簡単なコマンド

FileZillaで簡単に接続できるFTPとFTPSサーバを持っています。linux CLIの方法を探しています。lftpでできると思っていたのですが、変な感じがします。他の方法があるのでしょうか?

Googleで見つけた、lftpでFTPSに接続する方法がこちら。

lftp -c 'open -e "set ftps:initial-prot ""; \
   set ftp:ssl-force true; \
   set ftp:ssl-protect-data true; \
   put test.txt; " \
   -u "USERNAME","PASSWORD" \
   ftps://HOSTNAME:990 '

上で得たコードは失敗するように見える - 私はそれが好きではないので、まだ試していない、私はFileZillaで簡単に接続できるFTPとFTPSサーバを持っています。linux CLIの方法を探しています。lftp`でできると思っていたのですが、変な感じがします。他の方法があるのでしょうか?

Googleで見つけた、lftpでFTPSに接続する方法がこちら。

lftp -c 'open -e "set ftps:initial-prot ""; \
   set ftp:ssl-force true; \
   set ftp:ssl-protect-data true; \
   put test.txt; " \
   -u "USERNAME","PASSWORD" \
   ftps://HOSTNAME:990 '

上で得たコードは失敗するように見える - 私はそれが好きではないので、まだ試していない、私はが行の最後にある必要があることを知っています。

もっとシンプルなワンライナーを探しています。以下は私がFileZillaクライアントから接続して動作する方法です。

ftps://username:password@ftp.server.com/

また、これも動作します。

ftps://username:password@ftp.server.com/
``` 0x1&

回答 (5)

10
10
10
2016-04-14 06:26:07 +0000

2013年版のlftpでは利用できなかったのかどうかはわかりませんが、今は単純に次のようにすればいいのです:

lftp -u YOUR_USER HOST_ADDRESS

例えば、ユーザ192.168.1.50でホストtestに接続するには、次のように入力するだけです。

lftp -u test 192.168.1.50
``` 0x1&
9
9
9
2013-07-23 20:43:30 +0000

奇妙という言葉で、両方のタイプの引用符が付いた長いコマンドラインを意味するのであれば、それを避けてください。スクリプトを使って、ブックマークを保存しておきましょう。lftp に勝る ftp クライアントはないでしょう。

  1. lftp スクリプトをファイルに保存する
  2. lftp を引数なしで実行する
  3. スクリプトのソースを作成する
  4. ブックマークを保存する
  5. スクリプトを削除 (クリアテキストパスワードを削除するため)

ブックマークを将来的に使用します。ブックマークに ssl オプションが保存されているか、グローバル lftp 構成ファイルを使用して設定を保持する必要があるかどうかを確認する必要があります。


サンプルスクリプト。

$ cat lftp.ssl.commands
user moo foopass
set ftps:initial-prot "";
set ftp:ssl-force true;
set ftp:ssl-protect-data true;
open ftps://HOSTNAME:990

サンプル出力。

$ lftp
lftp :~> source lftp.ssl.commands
lftp HOSTNAME:~> dir
`ls' at 0 [Connecting...]
6
6
6
2016-01-29 15:13:50 +0000

または、bash スクリプトでこれを行うこともできます。

#!/bin/bash
lftp <<SCRIPT
set ftps:initial-prot ""
set ftp:ssl-force true
set ftp:ssl-protect-data true
open ftps://<hostname>:990
user <user> <password>
lcd /tmp
cd <ftp_folder_hierarchy>
put foo.txt
exit
SCRIPT

これにより、/etc/lftp.conf、~/.lftprc、~/.lftp/rc に恒久的な lftp の変更は発生しないはずです。

3
3
3
2016-05-05 12:06:54 +0000

これは一部のサーバでは失敗します。なぜなら、ssl の設定は open コマンドの中ではなく、open コマンドの前に渡されるべきだからです。

lftp -c 'set ftp:ssl-allow true ; set ssl:verify-certificate no; open -u USERNAME,PASSWORD -e "cd /; mput LOCAL/PATH/TO/FILE/FILENAME.EXT; quit" HOST'
2
2
2
2018-03-25 01:39:10 +0000

上記の設定でproftpdサーバに接続してみましたが、ログインできないので、以下のようにしてみたところ、問題ありません。

vi .lftprc

以下の内容のスクリプト設定ファイルを作成します。

set ftp:ssl-auth TLS set ftp:ssl-force true set ftp:ssl-protect-list yes set ftp:ssl-protect-data yes set ftp:ssl-protect-fxp yes set ssl:verify-certificate no

1.その後、サーバに接続する。

lftp username@hostname

で、これでOK!