zoukankan      html  css  js  c++  java
  • Python之SSH-paramiko模块的使用

    paramiko

    一 介绍

    # 用于帮助开发者通过代码远程连接服务器,并对服务器进行操作。
    # pip3 install paramiko 
    

    二 通过用户名密码方式远程执行命令

    import paramiko
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    # 连接服务器
    ssh.connect(hostname='192.168.16.85', port=22, username='root', password='123456')
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    # 获取命令结果
    result = stdout.read()
    # 关闭连接
    ssh.close()
    
    print(result.decode('utf-8'))
    

    三 通过用户名密码方式上传下载文件

    import paramiko
    
    transport = paramiko.Transport(('192.168.16.85', 22))
    transport.connect(username='root', password='123456')
    sftp = paramiko.SFTPClient.from_transport(transport)
    
    
    # 将location.py 上传至服务器 /tmp/test.py
    # sftp.put('123.txt', '/data/123.txt')
    sftp.get('/data/123.txt', '123.txt')
    
    transport.close()
    

    四 通过公钥私钥远程执行命令

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file(r'C:/Users/Administrator/.ssh/id_rsa')
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='192.168.16.85', port=22, username='root', pkey=private_key)
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    # 获取命令结果
    result = stdout.read()
    
    # 关闭连接
    ssh.close()
    
    print(result)
    

    五 通过公钥私钥远程上传下载文件

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file(r'C:/Users/Administrator/.ssh/id_rsa')
    
    transport = paramiko.Transport(('192.168.16.85', 22))
    transport.connect(username='root', pkey=private_key)
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 将location.py 上传至服务器 /tmp/test.py
    # sftp.put('/tmp/123.py', '/tmp/123.py')
    
    # 将remove_path 下载到本地 local_path
    # sftp.get('123.py', '123.py')
    
    transport.close()
    

    六 通过私钥字符串远程连接服务器

    # 也可以是存在于数据库中
    key = """-----BEGIN RSA PRIVATE KEY-----
    
    -----END RSA PRIVATE KEY-----"""
    
    
    import paramiko
    from io import StringIO
    
    private_key = paramiko.RSAKey(file_obj=StringIO(key))
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='192.168.16.85', port=22, username='root', pkey=private_key)
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    # 获取命令结果
    result = stdout.read()
    
    # 关闭连接
    ssh.close()
    
    print(result)
    

    七 生成公钥私钥并上传

    # 1 生成公钥和私钥s
    sh-keygen.exe -m pem
    
    # 2 在当前用户家目录会生成: .ssh/id_rsa.pub    .ssh/id_rsa
    
    # 3 把公钥放到服务器
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.16.85 
    
    # 4 以后再连接服务器时,不需要在输入密码
    ssh root@192.168.16.85
    
  • 相关阅读:
    2015年 Stoi&Gdoi 反思总结与未来计划
    bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得
    bzoj4518: [Sdoi2016]征途--斜率DP
    BZOJ 1391: [Ceoi2008]order
    BZOJ 2527: [Poi2011]Meteors
    BZOJ 2087: [Poi2010]Sheep
    BZOJ 1283: 序列
    BZOJ 1914: [Usaco2010 OPen]Triangle Counting 数三角形
    BZOJ 3513: [MUTC2013]idiots
    BZOJ 3771: Triple
  • 原文地址:https://www.cnblogs.com/liuqingzheng/p/13642948.html
Copyright © 2011-2022 走看看