pythonparamiko连接ssh实现命令

pythonparamiko连接ssh实现命令

目录

paramiko

安装

 原因

解决

执行命令 -秘钥

上传下载文件—用户名密码

上传下载文件-用户名秘钥

paramiko

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

安装 pip install paramiko

模块使用

执行命令—用户名+密码

#!/usr/bin/env python #coding:utf-8 import paramiko # 建立一个sshclient对象 ssh = paramiko.SSHClient() # 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 调用connect方法连接服务器 ssh.connect('192.168.1.108', 22, 'alex', '123') # 执行命令 stdin, stdout, stderr = ssh.exec_command('df') # 结果放到stdout中,如果有错误将放到stderr中 print(stdout.read().decode('utf-8')) # 关闭连接 ssh.close();

 paramiko\ecdsakey.py:164: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
  self.ecdsa_curve.curve_class(), pointinfo

paramiko\kex_ecdh_nist.py:39: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  m.add_string(self.Q_C.public_numbers().encode_point())

paramiko\kex_ecdh_nist.py:96: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
  self.curve, Q_S_bytes

paramiko\kex_ecdh_nist.py:111: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  hm.add_string(self.Q_C.public_numbers().encode_point())

 原因

paramiko 2.4.2 依赖 cryptography,而最新的cryptography==2.5里有一些弃用的API。

解决

删掉cryptography,安装2.4.2,就不会报错了。

pip uninstall cryptography

pip install cryptography==2.4.2

执行命令 -秘钥 import paramiko private_key_path = '/home/auto/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('主机名 ', 端口, '用户名', key) stdin, stdout, stderr = ssh.exec_command('df') print(stdout.read().decode("utf-8")) ssh.close() 上传下载文件—用户名密码 import os,sys import paramiko t = paramiko.Transport(('182.92.219.86',22)) t.connect(username='derek',password='123') sftp = paramiko.SFTPClient.from_transport(t) sftp.put('/tmp/test.py','/tmp/test.py')  t.close() import os,sys import paramiko t = paramiko.Transport(('182.92.219.86',22)) t.connect(username='derek',password='123') sftp = paramiko.SFTPClient.from_transport(t) sftp.get('/tmp/test.py','/tmp/test2.py') t.close() 上传下载文件-用户名秘钥 import paramiko pravie_key_path = '/home/auto/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(('182.92.219.86',22)) t.connect(username='derek',pkey=key) sftp = paramiko.SFTPClient.from_transport(t) sftp.put('/tmp/test3.py','/tmp/test3.py')  t.close() import paramiko pravie_key_path = '/home/auto/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(('182.92.219.86',22)) t.connect(username='derek',pkey=key) sftp = paramiko.SFTPClient.from_transport(t) sftp.get('/tmp/test3.py','/tmp/test4.py')  t.close()

以上就是python paramiko连接ssh实现命令的详细内容,更多关于python paramiko连接ssh的资料请关注易知道(ezd.cc)其它相关文章!

推荐阅读

    ssh免密码登录设置|ssh配置免密登录

    ssh免密码登录设置|ssh配置免密登录,,1. ssh配置免密登录无法解析秘钥的问题,建议查看一下/root目录,不能给777权限,还有.ssh目录的权限设置7

    ssh超时时间设置|sshd启动超时

    ssh超时时间设置|sshd启动超时,,1. sshd启动超时1、sshd服务默认配置下,启用了超时断开连接功能。2、配置文件:/etc/ssh/sshd_config中找到

    怎么安装Git并配置SSH?(教程)

    怎么安装Git并配置SSH?(教程),密钥,安装,配置,输入,命令,密码,Git是一款非常强大的版本控制工具,它简单易用、功能强大,广泛用于软件开发、项目管理

    Java语言中的SSH框架介绍

    Java语言中的SSH框架介绍,框架,应用程序,对象,用于,请求,二级缓存,随着互联网的飞速发展和信息化的普及,Java已经成为最流行的开发语言之一。Jav

    通过ssh远程连接docker中的容器

    通过ssh远程连接docker中的容器,容器,端口,需求:想自己搭建一个ubuntu的lnmp环境,但是使用powershell的时候,各种别扭,所以就考虑远程连接,通过

    路由器设置ss|路由器设置SSH无反应

    路由器设置ss|路由器设置SSH无反应,,路由器设置SSH无反应可以通过手机客户端进行重启小米路由器mini,打开小米路由器APP点击左上角的 账号

    ubuntu – 同一主机的多个SSH私钥

    ubuntu – 同一主机的多个SSH私钥,密钥,主机,如何为同一主机存储2个不同的私有SSH密钥?我已经在/ etc / ssh / ssh_config中尝试了两个具有

    ssh编码设置|ssh修改密码命令

    ssh编码设置|ssh修改密码命令,,1. ssh修改密码命令首先需要打开SecureCRT客户端,点击连接。2、然后需要输入主机地址,点击连接。3、根据提示

    Win10怎么使用SSH登录Ubuntu?

    Win10怎么使用SSH登录Ubuntu?,SSH,Ubuntu,Win10系统如何使用SSH登录Ubuntu?SSH是什么?SSH是一种安全shell协议,允许用户远程连接在服务器或桌

    putty连接ssh使用教程

    putty连接ssh使用教程,putty连接ssh使用具体教程,putty是一款小巧终端模拟软件。支持ssh、telnet等连接方式。但是对于新手来说,并不清楚怎

    设置默认的SSH密钥位置

    设置默认的SSH密钥位置,设置默认的SSH密钥位置,位置,查找,默认,文件,Setting the default ssh key locationssh默认会在?/ .ssh文件夹中查