当前位置: 首页 > 编程笔记 >

Python paramiko使用方法代码汇总

柴衡
2023-03-14
本文向大家介绍Python paramiko使用方法代码汇总,包括了Python paramiko使用方法代码汇总的使用技巧和注意事项,需要的朋友参考一下

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 我的图书馆项目使用。。。 打字稿 卷 D3 @类型/d3 包裹。json文件具有以下依赖关系 我的卷发。配置。js文件配置了这些插件。。。 汇总可以很好地构建它。但是,在编辑器中,VSCode会在d3符号上显示错误。当我把鼠标悬停在上面时,我看到了这个错误。。。 [ts]“d3”指的是UMD全局文件,但当前文件是一个模块。考虑添加一个导入。 我可以添加这个导入,使错误在编辑器中消失。 但是,然后汇

  • 本文向大家介绍Js数组扁平化实现方法代码总汇,包括了Js数组扁平化实现方法代码总汇的使用技巧和注意事项,需要的朋友参考一下 题目: 请写出一个数组拍平函数。效果如下: var arr=['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4]; flat(arr) //a,b,c,2,d,e,f,g,3,4 方法一:使用toString方法先将arr转换为一个

  • 本文向大家介绍JavaScript中split() 使用方法汇总,包括了JavaScript中split() 使用方法汇总的使用技巧和注意事项,需要的朋友参考一下 split() 方法用于把一个字符串分割成字符串数组。 例子 1 在本例中,我们将按照不同的方式来分割字符串: 例子 2 在本例中,我们将分割结构更为复杂的字符串: 例子 3 使用下面的代码,可以把句子分割成单词: 例子 4 如果您希望

  • 本文向大家介绍易语言代码中嵌入汇编/机器码方法,包括了易语言代码中嵌入汇编/机器码方法的使用技巧和注意事项,需要的朋友参考一下 很多朋友在编写易语言里要混合插入汇编语言等,如何解决呢?我们来看下 我们都知道,C++或Delphi的程序源代码中可以嵌入汇编代码,以达到某些特定目的。易语言作为实用而又功能强大的编程语言,也允许在代码中嵌入汇编,——当然严格来说,是嵌入机器指令代码。借助“特殊功能支持库

  • 本文向大家介绍Java中常用的代码汇总,包括了Java中常用的代码汇总的使用技巧和注意事项,需要的朋友参考一下 1. 字符串有整型的相互转换 String a = String.valueOf(2);   //integer to numeric string  int i = Integer.parseInt(a); //numeric string to an int 2. 向文件末尾添加内容

  • 本文向大家介绍JavaScript中使用数组方法汇总,包括了JavaScript中使用数组方法汇总的使用技巧和注意事项,需要的朋友参考一下 定义数组 或 使用: 数组中也可以放入单个值 如: 循环数组取值 输出:1 1 2 2 js中数组的用法 1、数组的创建 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以