python - open - ¿Cómo conectarse al servidor remoto con paramiko sin una contraseña?
pxssh (1)
Estoy escribiendo un script en Python que necesita conectarse a un remote_server
con SSH y mover un file
desde remote_server
a host_server
. Necesito hacerlo sin una contraseña, ya que necesita funcionar para cualquier servidor remoto y cualquier usuario del servidor host.
Mi código:
#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."
Pregunta: ¿Existe alguna forma de configurar una clave pública dentro del script sin acceder a un terminal de línea de comando, de modo que cada vez que se ejecute el script, configure el acceso sin contraseña con SSH?
ssh.connect()
toma una palabra clave argumento pkey
que puede usar para especificar su archivo privado.
#get IP and username for remote access
IP = input("Enter host_server IP: ").split()
username = input("Enter username: ").split()
#create a file on host_server for file
file_a = open(date+"file.txt", "a") #ignore the date variable
file = str(date+"file.txt")
import paramiko
import os
privatekeyfile = os.path.expanduser(''~/.ssh/id_rsa'')
mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)
ssh.connect(IP[0], username = user[0], pkey = mykey)