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实现ipsec开权限实例
Nov 11 Python
python开发之for循环操作实例详解
Nov 12 Python
Django实现简单分页功能的方法详解
Dec 05 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
python Pandas 读取txt表格的实例
Apr 29 Python
python实现图片彩色转化为素描
Jan 15 Python
python 用for循环实现1~n求和的实例
Feb 01 Python
pandas 空数据处理方法详解
Nov 02 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
如何在django中实现分页功能
Apr 22 Python
python实现学生成绩测评系统
Jun 22 Python
Python自然语言处理之切分算法详解
Apr 25 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
mysql 搜索之简单应用
2007/04/27 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
javascript 常用方法总结
2009/06/03 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python装饰器初探(推荐)
2016/07/21 Python
Python气泡提示与标签的实现
2020/04/01 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
JAVA软件工程师测试题
2014/07/25 面试题
公务员培训自我鉴定
2013/09/19 职场文书
高中生自我评价个人范文
2013/11/09 职场文书
合作协议书
2014/04/23 职场文书
铣工实训报告
2014/11/05 职场文书
邀请函范文
2015/02/02 职场文书
见习期个人总结
2015/03/05 职场文书
学校实习推荐信
2015/03/27 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python