iT邦幫忙

0

FTP連線使用TLS加密於CMD或python 2020/08/04更新

  • 分享至 

  • xImage

近期有這項稍微奇怪之需求
系統使用windows

python部分使用過

from ftplib import FTP_TLS
ftps = FTP_TLS('FTP位置')
ftps.login(user='帳號',passwd='密碼')
ftps.prot_p()
ftps.nlst()
ftps.quit()

此範例進行過修改
但於ftps.nlst()處皆會錯誤
錯誤碼為

TimeoutError: [WinError 10060] 連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回 應。

請問cmd有內建方法可以使用tls加密連線嗎?
或者該python問題為何呢?

2020/08/04更新進展

...
ftps.prot_p()
print(ftps.getwelcome())
print(ftps.size('OOXX.xml'))
到這邊都可以正確
但如果要對檔案進行上傳或下載則依然會出現

TimeoutError: [WinError 10060] 連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回應。

之錯誤

另外print(ftps.getwelcome())的回傳值會是220 (vsFTPd 3.0.2)

jscorpio iT邦新手 5 級 ‧ 2020-08-03 18:41:12 檢舉
想用cmd控制ftp動作的話可以試用看看WinSCP
它內建即支援指令模式跟多種加密協定
不用付費還持續有在更新
應該會符合你的需求
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
微甜的酸
iT邦新手 2 級 ‧ 2020-08-03 14:41:10

在使用你提供的程式碼時並未出現此問題OuO
使用repl.it

a500197 iT邦新手 5 級 ‧ 2020-08-03 14:53:47 檢舉

是的
因為這僅為範例
此目標之FTP不須登入所以並不會報錯

喔喔~原來如此!

0
Ray
iT邦大神 1 級 ‧ 2020-08-03 22:07:22

nlst 指令停住不動, 通常都是 Passive/Active mode 的問題; 據說 ftplib client 預設開啟 Passive mode, 請先弄清楚你要連的 FTP Server 是使用 Passive 還是 Active mode?

我不確定這是不是根因?
但是 FTP 兩邊的 mode 不匹配, 確實會發生 nlst 卡死現象...

a500197 iT邦新手 5 級 ‧ 2020-08-04 09:31:13 檢舉

曾經有以為是這個問題
但若是改成主動式
則會出現

ftplib.error_perm: 500 Illegal PORT command.

之錯誤

0
souda
iT邦好手 1 級 ‧ 2020-08-04 13:04:34

建議參考看看ssh scp.
https://pypi.org/project/scp/
讓你參考看看!

看更多先前的回應...收起先前的回應...
a500197 iT邦新手 5 級 ‧ 2020-08-04 13:38:10 檢舉

測試了一下依然出現了

TimeoutError: [WinError 10060] 連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回 應。

souda iT邦好手 1 級 ‧ 2020-08-04 19:24:04 檢舉

可以先用WINSCP測看看! SSH SERVER 是否正常?

a500197 iT邦新手 5 級 ‧ 2020-08-05 09:23:00 檢舉

如果用WINSCP或者filezilla開都正常

souda iT邦好手 1 級 ‧ 2020-08-06 08:11:11 檢舉

帳密應該沒設定!
import paramiko

ssh_client = paramiko.SSHClient()
ssh_client.connect(hostname, username=username, key_filename=key_filename, password=password)

https://pypi.org/project/scpclient/

我要發表回答

立即登入回答