zoukankan      html  css  js  c++  java
  • 【模块】:paramiko

    一、堡垒机前戏

    开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作

    模块安装

    C:Program FilesPython 3.5Scripts>pip3.5.exe install paramiko
    如果报错pip install --upgrade pip 更新下pip继续上步安装就哦了

    ssh客户端

    创建用于连接远程服务器的客户端并执行基本命令

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    #-Author-Lian
    
    import paramiko
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname="192.168.20.219",port=22,username="root",password="zyw@123")
    
    # 执行命令
    stdin,stdout,stderr = ssh.exec_command("df")
    # 获取命令结果
    result = stdout.read()
    # 打印输出
    print(result.decode())
    
    # 关闭连接
    ssh.close()
    
    # 程序输出
    # Filesystem           1K-blocks    Used Available Use% Mounted on
    # /dev/mapper/VolGroup-lv_root
    #                       48966472 2169976  44302444   5% /
    # tmpfs                   502176       0    502176   0% /dev/shm
    # /dev/sda1               487652   28375    433677   7% /boot
    sshclient

    基于公钥密钥连接

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    #-Author-Lian
    
    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('id_rsa')
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname="192.168.20.219",port=22,username="root",pkey=private_key)
    
    # 执行命令
    stdin,stdout,stderr = ssh.exec_command("df")
    # 获取命令结果
    result = stdout.read()
    # 打印输出
    print(result.decode())
    
    ssh.close()
    
    # 程序输出
    # Filesystem           1K-blocks    Used Available Use% Mounted on
    # /dev/mapper/VolGroup-lv_root
    #                       48966472 2169976  44302444   5% /
    # tmpfs                   502176       0    502176   0% /dev/shm
    # /dev/sda1               487652   28375    433677   7% /boot
    sshclient-rsa

    sftp客户端

    创建用于连接远程服务器的客户端并并进行上传、下载

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    #-Author-Lian
    
    import paramiko
    
    transport = paramiko.Transport(("192.168.20.219",22))
    transport.connect(username="root",password="zyw@123")
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 上传文件
    sftp.put("location.py","/tmp/test.py")
    # 下载文件
    sftp.get("location.py","/tmp/test.py")
    
    transport.close()
    sftpclient
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    #-Author-Lian
    
    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file("id_rsa")
    transport = paramiko.Transport(("192.168.20.219",22))
    transport.connect(username="root",pkey=private_key)
    
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 上传文件
    sftp.put("location.py","/tmp/test.py")
    # 下载文件
    #sftp.get("location.py","/tmp/test.py")
    
    transport.close()
    sftpclient-rsa

    创建密钥

    [root@bogon tmp]# ssh-keygen -t rsa        

    上面的命令在服务端linux上执行的,用root登录的,会在/root/.ssh/目录下生产id.rsa(私钥)、id.rsa.pub(公钥)。把id.rsa拷贝到客户端(本次测试的是windows),id.rsa.pub改名为authorized_keys依然放到目录/root/.ssh/目录下

    私钥放到客户端,公钥放到要免密码登录的服务器上,多台就放置到多台上!!!这个我之前竟然忘了啊啊啊啊啊啊!!!

  • 相关阅读:
    英语Lignaloes沉香木LIGNALOES单词
    英语chrismatite黄蜡石chrismatite单词
    英语cartialgenous鹿茸cartialgenous单词
    英语NanyangJade南阳玉NanyangJade独山玉
    单词chalchiguite硬玉chalchiguite英语
    英语_金丝楠是紫楠(phoebeSheareri)的别名
    英语AquilariaCrassna奇楠沉香
    英语LIGNALOO沉香lignaloo单词
    iOS批量添加SDK自动打包GUI工具
    如何做一个跨平台的游戏App?
  • 原文地址:https://www.cnblogs.com/lianzhilei/p/5885386.html
Copyright © 2011-2022 走看看