zoukankan      html  css  js  c++  java
  • SSH客户端

    1.SHHClient

    用于连接远程服务器并执行基本命令

    基于用户名密码连接:[windows | linux]

    import paramiko
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='ip|域名', port=22, username='fight', password='xxx')
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('ls')
    # 获取命令结果
    result = stdout.read()
    
    # 关闭连接
    ssh.close()

    或者:

    import paramiko
    
    transport = paramiko.Transport(('hostname', 22))
    transport.connect(username='fight', password='123')
    
    ssh = paramiko.SSHClient()
    ssh._transport = transport
    
    stdin, stdout, stderr = ssh.exec_command('df')
    print stdout.read()
    
    transport.close()

    基于公钥密钥连接:

     RSA非对称加密验证算法

    public key【公钥】

    private key 【私钥】 

    把公钥给要连接的一方,自己拿着私钥去连接

    生成一对公钥、私钥:ssh -keygen  【Linux】  -->~/.ssh/id_rsa    ~/.ssh/id_rsa_pub

    公钥的位置:~/.ssh/authorized_keys

    拷贝公钥:ssh-copy-id [-i filepath]  "-p666 username@ip"

    in linux:

    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='xxxx', port=22, username='fight', pkey=private_key)
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    # 获取命令结果
    result = stdout.read()
    
    # 关闭连接
    ssh.close()

    2.传输文件SFTPClient

    使用scp命令:

      scp -rp -P22 filename root@ip:/tmp/ 

    基于用户名密码上传下载:

    import paramiko
     
    transport = paramiko.Transport(('hostname',22))
    transport.connect(username='fight',password='123')
     
    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()

    基于秘钥:

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
    
    transport = paramiko.Transport(('hostname', 22))
    transport.connect(username='fight', pkey=private_key )
    
    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')

     

  • 相关阅读:
    宽带上网路由器设置
    ssh 与 irc
    Centos7 wifi
    linux无法挂载u盘
    virtualbox之usb设备的分配
    5G工程师必备!5G协议清单大全
    SSB的时频资源怎么确定的?UE那边怎么检测呢?
    link
    C++有用link
    C++学习路线转载
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/9382376.html
Copyright © 2011-2022 走看看