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 测试实现方法
Dec 24 Python
python写入xml文件的方法
May 08 Python
Python Matplotlib库入门指南
May 18 Python
python简单实现旋转图片的方法
May 30 Python
python魔法方法-属性转换和类的表示详解
Jul 22 Python
Python 实现一行输入多个值的方法
Apr 21 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
python3人脸识别的两种方法
Apr 25 Python
Python二维码生成识别实例详解
Jul 16 Python
python批量修改xml属性的实现方式
Mar 05 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过滤危险html代码
2008/08/18 PHP
ajax php 实现写入数据库
2009/09/02 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
深入理解PHP内核(一)
2015/11/10 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
PyQt5每天必学之事件与信号
2018/04/20 Python
用Python shell简化开发
2018/08/08 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
Python多线程原理与用法详解
2018/08/20 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python实现共轭梯度法
2019/07/03 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
django 外键创建注意事项说明
2020/05/20 Python
python要安装在哪个盘
2020/06/15 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
医科大学毕业生自荐信
2014/02/03 职场文书
安全责任书范本
2014/04/15 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书