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处理cookie详解
Feb 07 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
单链表反转python实现代码示例
Feb 08 Python
Python简单定义与使用二叉树示例
May 11 Python
Python的互斥锁与信号量详解
Sep 12 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
使用python远程操作linux过程解析
Dec 04 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
详解Python流程控制语句
Oct 28 Python
Python读写锁实现实现代码解析
Nov 28 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
isset和empty的区别
2007/01/15 PHP
php公用函数列表[正则]
2007/02/22 PHP
php5新改动之短标记启用方法
2008/09/11 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
Python格式化css文件的方法
2015/03/10 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
使用Python读取大文件的方法
2018/02/11 Python
基于python指定包的安装路径方法
2018/10/27 Python
python的依赖管理的实现
2019/05/14 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Django models filter筛选条件详解
2020/03/16 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
买房子个人收入证明
2014/01/16 职场文书
个人简历自荐信
2014/06/26 职场文书
销售人才自我评价范文
2014/09/27 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL