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正则表达式使用经典实例
Jun 21 Python
回调函数的意义以及python实现实例
Jun 20 Python
python中的字典操作及字典函数
Jan 03 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
python实现opencv+scoket网络实时图传
Mar 20 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
Python爬虫之Selenium库的使用方法
Jan 03 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
Django 中 cookie的使用
2017/08/17 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
推荐dojo学习笔记
2007/03/24 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
python多进程操作实例
2014/11/21 Python
Python Socket传输文件示例
2017/01/16 Python
python计算列表内各元素的个数实例
2018/06/29 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
办公文员的工作岗位职责
2013/11/12 职场文书
茶叶生产计划书
2014/01/10 职场文书
超市重阳节活动方案
2014/02/10 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
如何判断pytorch是否支持GPU加速
2021/06/01 Python