Python paramiko使用方法代码汇总


Posted in Python onNovember 20, 2020

1、用户名、密码登陆方式

import paramiko
paramiko.util.log_to_file('paramiko.log') # 记录日志文件
ssh = paramiko.SSHClient()
try:
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect('139.xx.xx.xx', username='work', password='***')
  cmd = 'ls' # 需要执行的Linux命名
  stdin, stdout, stderr = ssh.exec_command(cmd) #执行命令后的结构
  print(stdout.readlines())
  print(stdout.read().decode())
except Exception as e:
  print("%s:%s" % (e.__class__, e))
finally:
  # 关闭
  ssh.close()

2、免密登陆方式

import paramiko
ssh = paramiko.SSHClient()
SSH_PRIVATE_KEY ='/Users/xueerhuan/.ssh/id_rsa' #本地密钥文件路径

try:
  key = paramiko.RSAKey.from_private_key_file(SSH_PRIVATE_KEY) # 无解密密码时
  #key = paramiko.RSAKey.from_private_key_file(SSH_PRIVATE_KEY, password='******') # 有解密密码时,

  ssh.load_system_host_keys() #通过known_hosts 方式进行认证可以用这个,如果known_hosts 文件未定义还需要定义 known_hosts
  #ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 通过公共方式进行认证 (不需要在known_hosts 文件中存在)
  ssh.connect(hostname='139.XX.XX.XX', port=22, username='root', pkey=key)
  stdin, stdout, stderr = ssh.exec_command("ps")
  # 获取命令结果
  result = stdout.read()
  # 打印输出
  print(result.decode())
except Exception as e:
  print("%s:%s" % (e.__class__, e))
finally:
  # 关闭
  ssh.close()

注意:生成密码的方法

A、进入本地 ssh文件夹 cd .ssh/

B、使用ssh-keygen生产本地公钥和私钥 ssh-keygen

xueerhuan@ubuntu:~/.ssh$ ls
id_rsa id_rsa.pub

C、将生成的id_rsa.pub文件中的内容copy到目标机的.ssh/authorized_keys中就可以了,如果没有authorized_keys,自己创建。但是要注意authorized_keys的权限一般是600

或者直接在本地使用一条命令也可以实现公钥的复制,ssh-copy-id后面接入的用户就是要支持免密登录的用户。

morra@ubuntu:~/.ssh$ ssh-copy-id "morra@192.168.1.42"
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/morra/.ssh/id_rsa.pub"
The authenticity of host '192.168.1.42 (192.168.1.42)' can't be established.
ECDSA key fingerprint is SHA256:/ufx+/OLtdsYy7vsdk4KDu9xJsBp6zHonRAf2jjT0GI.
Are you sure you want to continue connecting (yes/no)? n^H
Please type 'yes' or 'no': yes
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Password:

Number of key(s) added: 1

Now try logging into the machine, with:  "ssh 'morra@192.168.1.42'"  and check to make sure that only the key(s) you wanted were added.

#去目标机器下,检查authorized_keys文件
localhost:.ssh morra$ cat authorized_keys

3、密码上传文件

import os
import paramiko
ssh = paramiko.SSHClient()
SSH_PRIVATE_KEY ='/Users/xueerhuan/.ssh/id_rsa' #本地密钥文件路径
key = paramiko.RSAKey.from_private_key_file(SSH_PRIVATE_KEY)
paramiko.util.log_to_file('paramiko.log')

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('139.XX.XX.XX', username='root', password='***')
t = ssh.get_transport()
sftp = paramiko.SFTPClient.from_transport(t)
d = sftp.put("mm.txt", "/home/work/.ssh/mm.txt")
print(d)

4、免密上传文件

import os
import paramiko
ssh = paramiko.SSHClient()
SSH_PRIVATE_KEY ='/Users/xueerhuan/.ssh/id_rsa' #本地密钥文件路径
key = paramiko.RSAKey.from_private_key_file(SSH_PRIVATE_KEY)
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='139.XX.XX.XX', port=22, username='root', pkey=key)
t = ssh.get_transport()
sftp = paramiko.SFTPClient.from_transport(t)
d = sftp.put("mm.txt", "/home/work/.ssh/mm.txt")
print(d)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python随机生成彩票号码的方法
Mar 05 Python
Python的Flask框架中@app.route的用法教程
Mar 31 Python
python计算牛顿迭代多项式实例分析
May 07 Python
实例详解Python模块decimal
Jun 26 Python
如何获取Python简单for循环索引
Nov 21 Python
python中p-value的实现方式
Dec 16 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
利用python在excel中画图的实现方法
Mar 17 Python
详解Python 最短匹配模式
Jul 29 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
Python的logging模块基本用法
Dec 24 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 #Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 #Python
python爬取天气数据的实例详解
Nov 20 #Python
python爬取招聘要求等信息实例
Nov 20 #Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 #Python
Python getsizeof()和getsize()区分详解
Nov 20 #Python
Python析构函数__del__定义原理解析
Nov 20 #Python
You might like
php的字符串用法小结
2010/06/08 PHP
php 文件上传类代码
2011/08/06 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
python中字典dict常用操作方法实例总结
2015/04/04 Python
python模块之re正则表达式详解
2017/02/03 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
Gap工厂店:Gap Factory
2017/11/02 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
院领导写的就业推荐信
2014/03/09 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
葬礼主持词
2015/07/02 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
离婚协议书格式范本
2016/03/18 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书