Я пытаюсь скопировать некоторые файлы в приложение Azure, используя python как часть более широкого скрипта python.
Я могу сделать это с помощью FTP, но я не могу понять, как это сделать безопасным способом с использованием TLS.
Я использую учетные данные, которые я скачал с портала Azure, нажимаю «Получить профиль публикации», а затем использую их внутри кода Python, например:
import ftplib
ftpServer = ftplib.FTP_TLS(host='waws-<...>.ftp.azurewebsites.windows.net',
user='<MY_USER>\$<MY_USER>',
passwd='<VERY_LONG_PSW>')
однако при выполнении ftpServer.cwd('<THE_PATH_TO_INSPECT>')
тогда я вижу: ConnectionRefusedError: [Errno 111] Connection refused
При использовании ftplib.FTP(...)
вместо ftplib.FTP_TLS(...)
все работает как положено.
Глядя на документы по Python здесь https://docs.python.org/3.5/library/ftplib.html кажется, я должен убедиться, что соблюдается какое-то неявное / явное условие, но я не могу понять, что делать.
При чтении на различных веб-ресурсах мне кажется, что я должен использовать порт, отличный от стандартного 21, кто-то говорит 990, кто-то говорит 989, но я не могу понять, где указать этот другой порт в коде Python.
- Что не так с моим кодом? Почему я вижу
Connection refused
?
- Как сделать код Python, устанавливающий безопасное соединение TLS через FTP?
РЕДАКТИРОВАТЬ 1:
Кажется, что это неявное соединение для FTP связано с TLS версии 1.2 (согласно документации по python), я не уверен на 100%, так как я не знаком с этими стандартами, однако я все равно попробовал, но безуспешно.
Имейте в виду, , что <MY_USER>\$<MY_USER>
(и пароль) исходит из содержимого файла, который я загружаю с портала Azure как «Профиль публикации» , см. Ниже:
$ python
Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 17:14:51)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>>
>>>
>>> import ftplib
>>>
>>>
>>> ftpServer = ftplib.FTP_TLS(host='waws-<...>.ftp.azurewebsites.windows.net',
... user='<MY_USER>\$<MY_USER>',
... passwd='<VERY_LONG_PSW>')
>>>
>>>
>>>
>>> ftpServer.dir()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/<MY_USER>/Conda/lib/python3.6/ftplib.py", line 575, in dir
self.retrlines(cmd, func)
File "/home/<MY_USER>/Conda/lib/python3.6/ftplib.py", line 468, in retrlines
with self.transfercmd(cmd) as conn, \
File "/home/<MY_USER>/Conda/lib/python3.6/ftplib.py", line 399, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "/home/<MY_USER>/Conda/lib/python3.6/ftplib.py", line 798, in ntransfercmd
conn, size = FTP.ntransfercmd(self, cmd, rest)
File "/home/<MY_USER>/Conda/lib/python3.6/ftplib.py", line 361, in ntransfercmd
source_address=self.source_address)
File "/home/<MY_USER>/Conda/lib/python3.6/socket.py", line 724, in create_connection
raise err
File "/home/<MY_USER>/Conda/lib/python3.6/socket.py", line 713, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
>>>
>>>