您的位置:首页 > 其它

paramiko建立无密码传输认证

2016-07-11 09:58 381 查看
root@datapark2:~# python -V
Python 3.4.3

#!/usr/bin/python
# -*- coding:utf-8 -*-
import paramiko
import sys,os
home_dir=os.path.expanduser('~')
id_rsa_pub='%s/.ssh/id_rsa.pub' % home_dir
if not id_rsa_pub:
print('id_rsa.pub error!')
sys.exit(0)
def upload_file(hostname,port,user,passwd):
try:
s=paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(hostname,port,user,passwd)
t=paramiko.Transport((hostname,port))
t.connect(username=user,password=passwd)
sftp=paramiko.SFTPClient.from_transport(t)
print('create Host:%s .ssh dir......' %hostname)
stdin,stdout,stderr=s.exec_command('mkdir ~/.ssh')
print('upload id_rsa.pub to Host: %s.....' %hostname)
sftp.put(id_rsa_pub,"/tmp/temp_key")
stdin,stdout,stderr=s.exec_command('cat /tmp/temp_key >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f /tmp/temp_key')
print('host:%s@%s auth success!\n' %(user,hostname))
t.close()
s.close()
except Exception as e:
import traceback
traceback.print_exc()
try:
t.close()
s.close()
except:
pass
def run():
with open('host.txt','r') as f:
for i in f:
f1 = i.split()
hostname,port,user,passwd = f1
upload_file(hostname,int(port),user,passwd)
if __name__ =="__main__":
run()
root@datapark2:/data/python_test# cat host.txt
192.168.31.162		22	root		123456
192.168.31.130		22	root		123456
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息