2013-08-21 22 views
9

私はremote_serverにSSHで接続し、remote_serverからhost_serverfileを移動する必要があるスクリプトをPythonで書いています。リモートサーバーとホストサーバーユーザーの両方で動作する必要があるため、パスワードなしで行う必要があります。パスワードなしでparamikoでリモートサーバに接続するには?

マイコード:

#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." 

質問:スクリプトが、それはパスワードなしを設定します実行するたびれるように、コマンド・ライン・ターミナルにアクセスすることなく、スクリプト内の公開鍵を設定する方法がありますSSHでのアクセス?

答えて

15

ssh.connect()は、プライベートファイルの指定に使用できるキーワード引数pkeyを使用します。

#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) 
関連する問題