Python kết nối sftp

SFTP còn được gọi là Giao thức truyền tệp SSH. Đây là một giao thức mạng cung cấp quyền truy cập tệp, truyền tệp và quản lý tệp qua bất kỳ luồng dữ liệu đáng tin cậy nào. Chương trình được chạy trên một kênh bảo mật, chẳng hạn như SSH, mà máy chủ đã xác thực ứng dụng khách và danh tính của người dùng ứng dụng khách có sẵn cho giao thức

Mô-đun pysftp là một giao diện đơn giản cho SFTP. Mô-đun cung cấp mức độ trừu tượng cao và các thói quen dựa trên tác vụ để xử lý các nhu cầu SFTP. Vì vậy, chúng tôi cài đặt mô-đun vào môi trường python của mình bằng lệnh bên dưới

pip install pysftp

Ví dụ

Trong ví dụ dưới đây, chúng tôi đăng nhập vào một máy chủ từ xa bằng sftp, sau đó lấy và đặt một số tệp vào thư mục đó

import pysftp

with pysftp.Connection['hostname', username='me', password='secret'] as sftp:

    with sftp.cd['/allcode']:           # temporarily chdir to allcode
        sftp.put['/pycode/filename']  	# upload file to allcode/pycode on remote
        sftp.get['remote_file']         # get a remote file

Khi chúng tôi chạy đoạn mã trên, chúng tôi có thể xem danh sách các tệp có trong thư mục allcode, đồng thời đặt và nhận một số tệp trong thư mục đó

Python và SFTP là hai công cụ hữu ích khi bạn đang phát triển hoặc duy trì một trang web. Là nhà phát triển web, bạn có thể sử dụng SFTP để truy cập trang web nhanh, truyền tệp và thậm chí thực hiện sao lưu dữ liệu trang web của mình theo lịch trình. Ngoài ra, với Python, bạn không chỉ có thể tải xuống hoặc tải tệp lên máy chủ SFTP của mình mà còn có thể tạo giải pháp tự động phụ trợ mạnh mẽ cho toàn bộ trang web của mình

Trong bài đăng này, chúng ta sẽ xem qua các mô-đun Python để sử dụng SFTP. Sau đó, chúng tôi sẽ sử dụng các mô-đun này trong một vài ví dụ để tải lên và tải xuống dữ liệu. Cuối cùng, chúng ta sẽ xem SDK Python để truy cập giải pháp dựa trên đám mây SFTP mạnh mẽ của bên thứ ba

Mục lục

  1. Truy cập SFTP bằng Python
    • Bạn cần gì để truy cập máy chủ SFTP bằng Python?
    • Giải nén tệp khóa SSH
  2. Các mô-đun cần thiết của Python
    • mật mã
    • ba-la-mật
  3. Mô-đun pysftp và một ví dụ
    • Một ví dụ
  4. Các tập lệnh mẫu để liệt kê và nhận
    • Tải xuống một tệp
    • Các chức năng kết nối hữu ích khác
  5. Sử dụng ứng dụng Python của bạn để truy cập nền tảng dựa trên đám mây
    • Tích hợp tập tin. com với ứng dụng Python của bạn
  6. Từ cuối cùng

1. Truy cập SFTP bằng Python

SFTP [FTP an toàn] là một cơ chế truyền được gọi là “Giao thức truyền tệp Shell an toàn. ” Giao thức SFTP được xây dựng dựa trên SSH để thiết lập một đường hầm được mã hóa giữa máy khách và máy chủ và truyền tệp an toàn qua các mạng không an toàn

Hãy nhớ rằng SFTP không giống như FTP qua SSH. Mặc dù FTP qua SSH cũng sử dụng SSH, nhưng đây là FTP cũ đơn giản được đóng gói bằng SSH. Mặt khác, SFTP là một giao thức truyền tệp độc lập hoàn chỉnh mô phỏng cú pháp FTP và sử dụng SSH

a. Bạn cần gì để truy cập máy chủ SFTP bằng Python?

Để truy cập máy chủ SFTP bằng Python, bạn sẽ cần các tham số sau

  • Địa chỉ IP của máy chủ [hoặc tên máy chủ]
  • Tên người dùng và mật khẩu
  • Và trong hầu hết các trường hợp, khóa SSH

Bạn sẽ cần lấy dữ liệu này vào tập lệnh Python của mình và gán chúng làm tên biến

Lưu ý rằng trong hầu hết các trường hợp, kết nối SFTP yêu cầu khóa. Các khóa SSH công khai có thể được cung cấp bởi trình quản lý máy chủ SFTP hoặc được thu thập từ lần bắt tay ban đầu thông qua kết nối SFTP

b. Giải nén tệp khóa SSH

Nếu bạn đang kết nối với máy chủ SFTP lần đầu tiên bằng thông tin đăng nhập, bạn sẽ nhận được khóa SSH của máy chủ lưu trữ từ máy chủ SFTP. Máy khách SFTP của bạn không biết về khóa, nhưng bạn có thể nhận ra và tin tưởng máy chủ SFTP mục tiêu, sau đó thiết lập kết nối. Luôn giữ chìa khóa của bạn ở nơi an toàn

Bạn có thể sử dụng các công cụ máy khách SFTP như CyberDuck hoặc FileZilla để thiết lập kết nối ban đầu và nhận khóa

Cất giữ chìa khóa ở nơi an toàn. Nếu bạn nhận được cảnh báo này lần thứ hai, hãy cẩn thận. Nếu khóa công khai của máy chủ và khóa chung được lưu trữ của bạn không khớp nữa, thì có thể đã xảy ra vi phạm bảo mật máy chủ FTP

2. Các mô-đun cần thiết của Python

Mô-đun duy nhất bạn cần để truy cập máy chủ SFTP trong Python là Pysftp. Mô-đun dễ sử dụng này cung cấp giao diện đơn giản cho SFTP. Tuy nhiên module này phụ thuộc vào 2 module khác là Paramiko và Cryptography

Ghi chú. Nếu bạn đang chạy Paramiko kế thừa [1. x], đặc biệt là phiên bản 1. 13 trở lên, bạn sẽ cần một phụ thuộc khác được gọi là PyCrypto. Tuy nhiên, nên nâng cấp lên Paramiko [2. x] và sử dụng mô-đun Mật mã. Điều này là do phần phụ thuộc kế thừa “PyCryto” không được dùng nữa và chứa các lỗ hổng bảo mật

a. mật mã

Mật mã là một mô-đun cung cấp các thuật toán mã hóa cấp thấp để triển khai SSH. Mô-đun này là một phụ thuộc của Paramiko. Để cài đặt Mật mã với pip

  • $ pip cài đặt mật mã

b. ba-la-mật

Paramiko là một triển khai Python cho giao thức SSHv2 cung cấp cả chức năng máy khách và máy chủ. Ngoài ra, nó tận dụng tiện ích mở rộng Python C cho Mật mã cấp thấp [pyca/mật mã]. Ngoài Mật mã học, Paramiko còn có một số phụ thuộc trực tiếp khác. bcrypt và pynacl

Paramiko là một thư viện Python tuyệt vời và là cốt lõi cho mô-đun quan trọng, Pysftp. Để cài đặt Paramiko, bạn cần nâng cấp Python của mình lên 2. 7 [hoặc cao hơn]. Cài đặt phiên bản ổn định mới nhất với

  • $ pip cài đặt tham số

Nếu bạn đã cài đặt thành công Paramiko, bạn sẽ có thể chạy mô-đun pysftp

3. Mô-đun pysftp và một ví dụ

Mô-đun pysftp cung cấp thư viện hoàn chỉnh để xử lý mọi nhu cầu SFTP của bạn. Như đã đề cập trước đây, pysftp là một phần phụ thuộc của Paramiko [Nó yêu cầu paramiko >= 1. 15. 2]. Giao diện Pysftp là một trình bao bọc mỏng của ứng dụng khách SFTP của Paramiko, vì vậy nó không cung cấp tất cả các tính năng của Paramiko, mà thay vào đó, nó triển khai trên các tác vụ Paramiko cấp cao

Cài đặt Pysftp trong môi trường của bạn với

  • $ pip cài đặt pysftp

Pysftp dựa trên đối tượng kết nối “pysftp. Sự liên quan[]". Đối tượng này hỗ trợ các kết nối SFTP thông qua tên người dùng, mật khẩu hoặc khóa. Nó cũng cho phép bạn truyền tệp, xóa, liệt kê, trong số các tác vụ khác

Một ví dụ

Một ví dụ về việc sử dụng pysftp với đối tượng kết nối

nhập pysftp

với pysftp. Kết nối ['tên máy chủ', tên người dùng = 'tôi', mật khẩu = 'bí mật'] dưới dạng sftp

với sftp. cd['công khai']. # tạm thời chdir để công khai

sftp. put[‘/my/local/filename']  # tải tệp lên công khai/ trên điều khiển từ xa

sftp. get[‘remote_file']         # lấy một tệp từ xa

Các biến như tên máy chủ [IP hoặc máy chủ lưu trữ], tên người dùng và mật khẩu phải được xác định ngoài thư mục và tên của các tệp cục bộ và từ xa. Ví dụ, để tải lên một “file ví dụ. txt” từ đường dẫn cục bộ sang đường dẫn từ xa “/var/www/html/examplefile. txt,” sử dụng sftp. đặt [đường dẫn cục bộ, đường dẫn từ xa]

với pysftp. Kết nối ['tên máy chủ', tên người dùng = 'tôi', mật khẩu = 'bí mật'] dưới dạng sftp

remotepath='/var/www/html/examplefile. txt'

localpath='file ví dụ. txt'

sftp. đặt [đường dẫn cục bộ, đường dẫn từ xa]

4. Tập lệnh mẫu để liệt kê và nhận

Trong các ví dụ Python khác nhau sau đây, pysftp được sử dụng để kiểm tra tệp chính khi cố gắng kết nối với máy chủ SFTP và cung cấp danh sách các tệp và đường dẫn

nhập pysftp

nhập hệ điều hành

localFile = os. con đường. tham gia [đường dẫn tệp, tên tệp]

cnopts = pysftp. CnOpts[knownhosts=os. con đường. tham gia [filepath, “keyfile”]]

Tên máy chủ = “tên máy chủ”

Tên người dùng = “tên người dùng”

Mật khẩu = “mật khẩu”

với pysftp. Kết nối [máy chủ = Tên máy chủ, tên người dùng = Tên người dùng, mật khẩu = Mật khẩu, cnopts = cnopts] dưới dạng sftp

in “Kết nối được thiết lập thành công…”

# thay đổi thư mục từ xa

sftp. cwd[‘/var/www/sftphosts/']

# Lấy cấu trúc của thư mục từ xa

thư mục_cấu trúc = sftp. listdir_attr[]

# In dữ liệu

cho attr trong thư mục_struct

in attr. tên tệp, attr

Đoạn script trên sử dụng kết nối pysftp. đối tượng để xác định các biến máy chủ, người dùng, mật khẩu và tùy chọn kết nối. Theo mặc định, khi kết nối với SFTP, khóa máy chủ được kiểm tra bằng cách sử dụng [~/. ssh/known_hosts]. Tuy nhiên, với Tùy chọn kết nối [CnOpts], bạn có thể chỉ định tệp khóa chính xác cho kết nối

Đoạn script trên sẽ liệt kê mọi tệp/thư mục trong thư mục của máy chủ từ xa bằng cách sử dụng các đối tượng SFTPAttributes của Paramiko. Danh sách các đối tượng thuộc tính SFTP này theo thứ tự tùy ý và không bao gồm các mục duy nhất ‘. ' và '. '

a. Tải xuống một tệp

Để tải xuống một tệp từ xa, hãy bắt đầu thiết lập kết nối, sau đó sử dụng “sftp. nhận” hoạt động. như một ví dụ

nhập pysftp

Tên máy chủ = “tên máy chủ”

Tên người dùng = “tên người dùng”

Mật khẩu = “mật khẩu”

với pysftp. Kết nối [máy chủ = Tên máy chủ, tên người dùng = Tên người dùng, mật khẩu = Mật khẩu] dưới dạng sftp

in “Kết nối được thiết lập thành công…”

# Xác định tệp từ xa mà bạn muốn tải xuống

remoteFilePath = ‘/var/backups/FILE. txt'

# Xác định đường dẫn cục bộ nơi tệp sẽ được lưu

localFilePath = ‘. /TẬP TIN. txt'

sftp. nhận [từ xaFilePath, localFilePath]

b. Các chức năng kết nối pysftp hữu ích khác?

Ngoài pysftp. Sự liên quan. get[], và thuộc tính print, bạn cũng có thể sử dụng các hàm khác như

  1. pysftp. Sự liên quan. đặt[]. Để tải tệp cục bộ lên đường dẫn từ xa, hãy sử dụng dòng. “sftp. đặt [localFilePath, remoteFilePath]”
  2. Pysftp. gỡ bỏ. Bạn có thể muốn xóa một tệp khỏi máy chủ từ xa của mình. Để làm điều này, sử dụng dòng sau. sftp. xóa ['/var/thư mục ví dụ/FILE001. txt']

Để biết thêm thông tin, hãy kiểm tra sách dạy nấu ăn pysftp

5. Sử dụng ứng dụng Python của bạn để truy cập nền tảng dựa trên đám mây

Các tập tin. com là một giải pháp quy trình công việc và chia sẻ tệp an toàn dựa trên đám mây cho mọi quy mô doanh nghiệp. Với tập tin. com, bạn có thể trao đổi tệp qua nền tảng dựa trên đám mây được bảo mật cao và thực hiện các tác vụ khác cho các tệp nhạy cảm của mình như tự động hóa, cộng tác, kiểm tra, v.v.

Tập tài liệu. nền tảng com cho phép bạn kết nối thông qua ba phương thức chuyển phổ biến. FTP, SFTP và WebDAV. Ngoài ra, bạn có thể gắn kết hoặc đồng bộ hóa bộ lưu trữ dựa trên đám mây của mình như Amazon S3, Azure, Dropbox, v.v. , trong cùng một nền tảng

Tích hợp tập tin. com với ứng dụng Python của bạn

Các tập tin. com cung cấp Bộ công cụ phát triển phần mềm [SDK] cho Python. SDK này là một bộ công cụ phát triển cung cấp môi trường Python dễ sử dụng để giúp nhà phát triển xác thực người dùng, truyền dữ liệu bằng SFTP, tạo bản sao lưu theo lịch trình, v.v.

Tập tài liệu. com SDK cho Python

  • Cho phép truy cập dễ dàng và thuận tiện vào Tệp. com API cho các ứng dụng được viết bằng Python
  • Cung cấp một bộ thư viện quen thuộc với các nhà phát triển Python
  • Nó cũng đi kèm với các công cụ cho các hoạt động của tệp bao gồm tải xuống, tải lên, liệt kê, viết, đọc, v.v.
  • Nên sử dụng Python SDK cho tất cả các hoạt động của tệp

Để cài đặt Tệp. com SDK cho Python

  1. Cài đặt nó qua PyPi
  2. Bạn cũng có thể lấy nó trực tiếp từ GitHub

Ngoài ra, bạn cũng có thể sử dụng Tệp. com với tư cách là ứng dụng khách SFTP. Gắn trực tiếp máy chủ SFTP bên ngoài của bạn vào Tệp. com giống như một thư mục và cung cấp nó qua giao diện web, SDK, API của Python hoặc các kết nối SFTP gửi đến khác

Bắt đầu tập tin của bạn. com dùng thử miễn phí

ExaVault là một dịch vụ quản lý tệp khác cung cấp thư viện Python để truy cập vào các chức năng của nó. Dịch vụ này sẽ cung cấp cả SFTP và FTPS. Bạn có thể sử dụng thư viện Python để tạo hệ thống truyền tệp được quản lý của riêng mình và gửi tệp đến không gian lưu trữ đám mây đi kèm với tài khoản

Cũng như các thư viện được viết bằng Python, ExaVault đã cung cấp các thư viện cho PHP, C#, JavaScript và Java. Các thư viện này có thể truy cập được trên kho lưu trữ GitHub ExaVault

Mặc dù bạn có thể truy cập trực tiếp vào các thư viện này, nhưng chúng sẽ không mang lại lợi ích gì cho bạn và với API ExaVault, trừ khi bạn đăng ký dịch vụ ExaVault, dịch vụ này sẽ kích hoạt các chức năng hỗ trợ các thư viện

Bạn có thể dùng thử miễn phí 30 ngày tất cả các dịch vụ ExaVault

Từ cuối cùng

Để bắt đầu với SFTP trong Python, trước tiên bạn cần lấy thông tin máy chủ của SFTP, bao gồm IP, thông tin đăng nhập [tên người dùng và mật khẩu] và khóa chung. Đây là những biến mà bạn sẽ cần đưa vào tập lệnh Python của mình. Sau đó, để triển khai Python SFTP, bạn sẽ cần cài đặt mô-đun Pysftp, mô-đun này rất quan trọng đối với tất cả các nhu cầu SFTP của bạn và phụ thuộc vào hai mô-đun khác, Paramiko và Mật mã

Ngoài ra, bạn cũng có thể trao quyền cho các ứng dụng Python của mình bằng giải pháp SFTP mạnh mẽ của bên thứ ba. Ví dụ: Tệp. com là một giải pháp chia sẻ tệp dựa trên đám mây cung cấp SDK Python để tích hợp vào các ứng dụng của bạn

Chủ Đề