ftps
サイトにログインしようとしています。コマンドラインでログインクレデンシャルを与えて(そしてset
パラメータを~/.lftprc
に入れてから、lftp
セッションを開いてlftp
でこれらのパラメータを入力してみましたジョブコントロールステートメントにかかわらず、私は同じ障害にぶつかっています。
421 Sorry, cleartext sessions are not accepted on this server.
Please reconnect using SSL/TLS security mechanisms.
次のパラメータを使用するとさらに問題が発生しましたが、上記のエラーが発生し続けます。
コマンドラインからlftp
にSSL/TLSセキュリティメカニズムを使用させるには?
目的は、bashを使用してこのftpsサイトへのアクセスをスクリプト化することです(expect
を使用しないプログラミング)。
lftp
lftp :~> set ssl-allow false
lftp :~> set passive-mode yes
lftp :~> open ftp.abc.com
lftp ftp.abc.com:~> login theuser
Password:
lftp [email protected]:~> cd
`cd' at 0 [Delaying before reconnect: 26]
CTRL-C
lftp [email protected]:~> debug
lftp [email protected]:~> cd
---- Connecting to ftp.abc.com (XX.XXX.XX.XX) port 21
<--- 220-Welcome to the Yahoo! Web Hosting FTP server
<--- 220-Need help? Get all details at:
<--- 220-http://help.yahoo.com/help/us/webhosting/gftp/
<--- 220-
<--- 220-No anonymous logins accepted.
<--- 220-Yahoo!
<--- 220-Local time is now 15:30. Server port: 21.
<--- 220-This is a private system - No anonymous login
<--- 220 You will be disconnected after 5 minutes of inactivity.
---> FEAT
<--- 211-Extensions supported:
<--- EPRT
<--- IDLE
<--- MDTM
<--- SIZE
<--- MFMT
<--- REST STREAM
<--- MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
<--- MLSD
<--- XDBG
<--- AUTH TLS
<--- PBSZ
<--- PROT
<--- TVFS
<--- ESTA
<--- PASV
<--- EPSV
<--- SPSV
<--- ESTP
<--- 211 End.
---> OPTS MLST type;size;modify;UNIX.mode;UNIX.uid;UNIX.gid;
<--- 200 MLST OPTS type;size;sizd;modify;UNIX.mode;UNIX.uid;UNIX.gid;unique;
---> USER theuser
<--- 421 Sorry, cleartext sessions are not accepted on this server.
Please reconnect using SSL/TLS security mechanisms.
lftp:〜> set ssl-allow false
明示的にssl-allowをfalseに設定しました。しかし、lftpがSSLを使用しようとする場合、これは当てはまります。
Lftpが多くのシステムで正しく構成されていないようで、サーバー証明書を検証できません(Fatal error: Certificate verification: Not trusted
を生成)。
Web(およびこの投稿の回答)には、証明書の検証または暗号化を完全に無効にすることによってこれを修正するための提案がたくさんあります。これはunsecureであり、中間者攻撃が気付かれずに通過するためです。
より良い解決策は、証明書の検証を正しく構成することです。これは幸いにも簡単です。そのためには、次の行を/etc/lftp.conf
(または~/.lftp/rc
、または~/.config/lftp/rc
)に追加します。
set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"
ca-certificates.crt
は、システムのすべてのCA証明書を含むファイルです。上記で使用されている場所はUbuntuのものであり、システムによって異なる場合があります。ファイルを生成または更新するには、 update-ca-certificates
を実行します。
Sudo update-ca-certificates
システムにこのコマンドがない場合は、次のように手動で作成できます。
cat /etc/ssl/certs/*.pem | Sudo tee /etc/ssl/certs/ca-certificates.crt > /dev/null
あなたもする必要があるかもしれません
set ssl:verify-certificate no
設定ftp:ssl-allow true
が機能しませんでした。
set
と入力すると、
lftp :~> set
私はこれに気づきました:
set ftp:ssl-allow true
set ftp:ssl-allow/XXX.XXX.XXX.XXX no
xXX.XXX.XXX.XXXがサーバーなので、ログインしていました。
だから私が必要とする最後のコマンドセットは:
lftp :~> set ftp:ssl-allow true
lftp :~> set ftp:ssl-allow/XXX.XXX.XXX.XXX true
lftp :~> set ssl:verify-certificate no
lftpバージョンは4.6.3以上でなければなりません(Debianユーザー)
これは、lftpを使用したFTPSサーバー接続(ポート990を使用しますが、指定する必要はありません)で機能しました
コード:lftp ftps://USER:[email protected] -c "set ssl:verify-certificate false;"
その後:何かをする