Làm thế nào để tạo một tệp máy chủ đã biết? [bản sao]
Tôi đang cố gắng kết nối với trang web SFTP bằng python nhưng tệp known_hosts không tồn tại trên máy windows 10 của tôi. Tôi đã tìm thấy trực tuyến rằng khóa máy chủ xuất hiện khi lần đầu tiên kết nối với máy chủ:https://winscp.net/eng/docs/ssh_verifying_the_host_key
Làm cách nào để chuyển đổi tệp này thành tệp known_hosts mà tôi có thể sử dụng trong mã python của mình?
Tôi đã thử tạo một tệp như: hostname ssh-rsa 2EP...8MZtrong ví dụ trên nhưng tôi nhận được lỗi khóa máy chủ không hợp lệ:Error('Incorrect padding'))
Cảm ơn bạn.
import pysftp
cnopts = pysftp.CnOpts(knownhosts='C:\\Users\\Documents\\known_hosts')
with pysftp.Connection('xxx',username='xxx', password='xxx',cnopts=cnopts) as sftp:
localpath='TEST.txt'
remotepath='TEST.txt'
sftp.put(localpath,remotepath)
sftp.close()
Trả lời
Trước tiên, bạn sẽ muốn thực sự biết mình đang sử dụng giao thức nào. Trong câu hỏi của bạn, bạn đã đề cập đến FTP nhiều lần và mã của bạn + khái niệm bạn đang nói đến (known_hosts) là những thứ SFTP.
FTP và SFTP là hai giao thức hoàn toàn khác nhau, FTP là một giao thức để truyền tệp giữa máy khách và máy chủ và SFTP để di chuyển tệp giữa máy khách và máy chủ SSH.
GIẢI QUYẾT !!! Vì vậy, tôi đang sử dụng Windows và sử dụng FileZilla và WinScp để chuyển sftp nhưng tệp C: \ Users .... ssh chưa bao giờ tồn tại theo như tôi biết. Tôi đã tải xuống máy khách Windows SSH:https://www.howtogeek.com/336775/how-to-enable-and-use-windows-10s-built-in-ssh-commands/
Và sau đó sử dụng PowerShell để kết nối với máy chủ. Khi bạn nhập lệnh: ssh hostnamenó sẽ chỉ ra dấu vân tay RSA và hỏi bạn có muốn kết nối không. Nhập Yes và nó sẽ trả về "Cảnh báo: Đã thêm vĩnh viễn 'tên máy chủ' vào danh sách các máy chủ đã biết. Sau đó, tệp .ssh sẽ xuất hiện trong thư mục C: \ Users .... ssh của bạn. Sau đó, tệp này có thể được tham chiếu trong python.
Cảm ơn bạn.