今天刚好看到了 python2 得 paramiko 模块 就拿来试了一下  发现 在windown 和linux 利用 paramiko  进行 ssh 连接得不同之处 linux 利用   ~/.ssh/known_hosts 出已安全!

如已登陆过

s.load_system_host_keys('/.ssh/known_hosts')

ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的***。


设置连接的远程主机没有本地主机密钥或HostKeys 对象时的策略 目前支持三种 分别是:


wKiom1kUV4mwBPQEAAI4gOb0AwA479.png-wh_50


  paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接

试一下连续运行 bash 命令  'df -H '

# _*_ coding:utf-8 _*_
import paramiko
#远程服务器
hostname = "191.168.1.220"
#端口
port = 22
#用户名
username = "root"
#密码
password = "66666"
#创建SSH连接日志文件(只保留前一次连接的详细日志,以前的日志会自动被覆盖)
paramiko.util.log_to_file("paramiko.log")
s = paramiko.SSHClient()
#Linux 读取know_host  ssh-keygen -t rsa
#s.load_system_host_keys()
#windown 添加——政策
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#建立SSH连接
s.connect(hostname,port,username,password)
#运行一下 bash 'df -H'
stdin,stdout,stderr = s.exec_command('df -H')
#打印输出一下
print stdout.read()
s.close()

wKioL1kTKtyRASw0AAFj2JmsWrA820.jpg-wh_50


现在试一下 post 一个 File 到 Linux  先来写个方法


def ssh_post(Server_ip,port,USER,PASSWORD,clinent_file,server_file):
     server=paramiko.Transport(Server_ip,port)
     server.connect(username=USER,password=PASSWORD)
     FTP_POST=paramiko.SFTPClient.from_transport(server)
     FTP_POST.put(clinent_file,server_file)
     server.close()

如果同时想在Linux上下载 File 只要在FTP_POST 对象调用 get('server_file','client_file') 方法即可 


wKiom1kUWPeg4PW2AASK6s-aXsQ686.png-wh_50




现在来测试一下

if __name__ == "__main__":
    port=22
    Server_ip='191.168.1.220'
    User_name='root'
    User_password='66666'
    CLINENT_FILE='c:\\red.txt'
    SERVER_FILE='/home/yum.txt'
    ssh_post(Server_ip,port,User_name,User_password,CLINENT_FILE,SERVER_FILE)

wKiom1kTP_PzcZe0AAAmYjtOQ6I695.png-wh_50