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中使用NLTK库实现对词干的提取的教程
Apr 08 Python
python的unittest测试类代码实例
Dec 07 Python
利用python将图片转换成excel文档格式
Dec 30 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
python正则实现提取电话功能
Feb 24 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
python集合的新增元素方法整理
Dec 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
PHP对象Object的概念 介绍
2012/06/14 PHP
深入解析php之apc
2013/05/15 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
python实现人人网登录示例分享
2014/01/19 Python
使用Python如何测试InnoDB与MyISAM的读写性能
2018/09/18 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
安全生产一岗双责责任书
2014/07/28 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
经理聘任证明
2015/03/02 职场文书
惊天动地观后感
2015/06/10 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript