zoukankan      html  css  js  c++  java
  • Python paramiko模块

    • 简介:
        paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密
      和认证的方式,进行远程服务器的连接。由于使用的是python这样的能够跨
      平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, Mac
      OS X, Windows等,paramiko都可以支持,因此,如果需要使用SSH从一
      平台连接到另外一个平台,进行一系列的操作时,paramiko是最佳工具之一。
     
    • 使用:
      功能:paramiko ssh链接用户密码
    # 基于用户名密码连接
    # sshClient
    
    import paramiko
     
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    
    
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    
    # 连接服务器
    ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', password='123')
     
    # 执行命令 , 加入;分好可执行两条命令(df;ifconfig)
    stdin, stdout, stderr = ssh.exec_command('df')
    
    # 获取命令结果
    result = stdout.read()
     
    # 关闭连接
    ssh.close()
    
    # stdin 标准输入,返回输入的命令,你输入给它的。
    # stdout 标准输出,命令执行结果
    # stderr 标准错误,命令执行过程中如果出错,就打印。
    # 注:命令只有一个,要么输出。要么错误。
    
    # 注:可以使用三元运算,读取输出结果。
    #    判断如果返回1就输出res,不成立就err。
    #    res,err = stdout.read(),stderr.read()
    #    result = res if res else err
    #    print(result.decode())
    #注:Linux ssh链接另一个节点。
    #    Linux登陆:ssh root@x.x.x.x -p端口 
    Linux ssh链接
      功能:paramiko ssh文件发送
    # 基于用户名密码上传下载
    # sshClient
    
    import paramiko
    
    # 发送文件时使用Transport(IP,端口),建立链接通道
    transport = paramiko.Transport(('hostname',22))
    transport.connect(username='wupeiqi',password='123')
    
    
    # 将Transport作为链接,传给paramiko.SFTPClient.from_transport。
    # 真正的传输协议实在SFTPClient内定义的。
    sftp = paramiko.SFTPClient.from_transport(transport)
    
    
    # 将location.py 上传至服务器 /tmp/test.py
    sftp.put('/tmp/location.py', '/tmp/test.py')
    
    
    # 将remove_path 下载到本地 local_path
    sftp.get('remove_path', 'local_path')
    
    # 关闭链接
    transport.close()
    #注:Linux下使用ssh发送文件。
    #    发送文件:scp -rp -P端口 文件名 root@x.x.x.x:路径
    #    -rp,r代表目录,p代表权限。
    Linux ssh文件发送
    • SSH RSA加密 :
      ssh 秘钥
      RSA 非对称秘钥验证
     
      公钥 public key
      私钥 private key
     
      10.0.0.31 --> 10.0.0.41 #不用密码链接
      私钥     公钥
     
      说明:先生成一对秘钥,秘钥在登陆端,公钥转给被登陆端,
         在次ssh时会匹配RSA秘钥则不需要输入密码。
     
     
     
      功能:paramiko ssh私钥链接公钥
    # 基于私钥链接,公钥
    
    import paramiko
    
    # 指定私钥位置 
    private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
     
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    # 连接服务器
    ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', pkey=private_key)
     
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    
    # 获取命令结果
    result = stdout.read()
     
    # 关闭连接
    ssh.close()
    #1.连接端生成秘钥
      #生成秘钥命令
      [root@localhost]# ssh-keygen 
      #秘钥存放路径
      Generating public/private rsa key pair.
      Enter file in which to save the key (/root/.ssh/id_rsa): 
      #秘钥上在加一条密令
      Enter passphrase (empty for no passphrase): 
      #在次输入上条密令
      Enter same passphrase again: 
      #RSA 2048 秘钥格式,生成随机图片
      +--[ RSA 2048]----+ 
     
    #2.发送公钥
      #使用ssh-copy-id命令发送公钥,加对应端口与IP,注意的是需要加双引号。
      [root@localhost ~]# ssh-copy-id "-p22 root@192.168.1.158"
     
    注:ssh公钥私钥说明。
      #私钥存放目录,不可传给任何人。
      Your identification has been saved in /root/.ssh/id_rsa.
      #公钥存放路径,传给要进行链接的节点。
      Your public key has been saved in /root/.ssh/id_rsa.pub.
      #将公钥存放对方用户目录下,没文件说明没登陆过,需手动创建。
      #权限设置为:chmod 600
      存方目录:用户]#vim .ssh/authorized_keys
      
    #注:home/.ssh/known_hosts文件:首次登陆双方建立一个安全的签名认证,会
    # 以加密的形式记录,再次登陆就不需要认证。
    Linux SSH RSA加密
  • 相关阅读:
    页面渲染速度增加的方法和建议
    五(六)、Package & import
    五(五)、构造器 & JavaBean &this
    五(四)、封装性
    五(三)、方法
    五(二)、匿名对象
    五(一)、类&对象概述
    六、java 异常处理
    四、java 数组
    三、java 基础提炼
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8168689.html
Copyright © 2011-2022 走看看