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 13 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
python构建深度神经网络(续)
Mar 10 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
python2 与 python3 实现共存的方法
Jul 12 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
Python Numpy 自然数填充数组的实现
Nov 28 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
初学者学习Python好还是Java好
May 26 Python
python3实现简单飞机大战
Nov 29 Python
解决Pycharm 运行后没有输出的问题
Feb 05 Python
Python使用scapy模块发包收包
May 07 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更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
require.js的用法详解
2015/10/20 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Python单元测试简单示例
2018/07/03 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
会计专业大学生职业生涯规划书
2014/02/11 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
刑事和解协议书范本
2014/11/19 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
给老师的一封感谢信
2015/01/20 职场文书
校车司机安全责任书
2015/05/11 职场文书
暖春观后感
2015/06/08 职场文书
学生安全责任协议书
2016/03/22 职场文书