Tôi đang viết một tập lệnh bằng Python yêu cầu kết nối với một số remote_server
bằng SSH và di chuyển file
từ remote_server
đến host_server
. Tôi cần phải làm điều đó mà không cần mật khẩu vì nó cần làm việc cho bất kỳ máy chủ từ xa nào và bất kỳ người dùng máy chủ lưu trữ nào.Làm thế nào để kết nối với máy chủ từ xa với paramiko mà không cần mật khẩu?
Mã của tôi:
#get IP and username for remote access
IP = input("Enter host_server IP: ").split()
username = input("Enter username: ").split()
#password = ???????
#create a file on host_server for file
file_a = open(date+"file.txt", "a") #ignore the date variable
file = str(date+"file.txt")
#move file to host_server
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(IP[0], username = user[0], password = password[0])
print "Connected to server."
transfer = ssh.open_sftp()
transfer.get("file.txt", file)
transfer.close()
print "Transfer completed."
Câu hỏi: Có cách nào để thiết lập một khóa công khai trong kịch bản mà không cần truy cập vào một thiết bị đầu cuối dòng lệnh, do đó mỗi lần kịch bản chạy nó sẽ thiết lập mật mã truy cập bằng SSH?