今天刚好看到了 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 对象时的策略 目前支持三种 分别是:
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()
现在试一下 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') 方法即可
现在来测试一下
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)
转载于:https://blog.51cto.com/10750501/1924326