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+mysql实现简单的web程序
Sep 11 Python
Python OS模块常用函数说明
May 23 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
django解决跨域请求的问题详解
Jan 20 Python
python3对接mysql数据库实例详解
Apr 30 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Pytest之测试命名规则的使用
Apr 16 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 str_pad 函数用法简介
2009/07/11 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
php实现字符串翻转的方法
2015/03/27 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
javascript倒计时效果实现
2015/11/12 Javascript
JavaScript中的闭包
2016/02/24 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
JavaScript中判断数据类型的方法总结
2016/05/24 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
Python简单日志处理类分享
2015/02/14 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
python 列表降维的实例讲解
2018/06/28 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
安装docker-compose的两种最简方法
2019/07/30 Python
Django重设Admin密码过程解析
2020/02/10 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
教师党的群众路线对照检查材料
2014/09/24 职场文书
少年雷锋观后感
2015/06/10 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS