1.课前准备:

本次学习堡垒机相关知识;之前,需要安装Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作。

前提:

python3.5程序安装到默认路径下并已添加path(如非默认,可根据报错信息自行百度)

步骤:

1:管理员方式打开cmd,切换到python安装路径的Scripts目录下:

2:执行命令:

pip3.5.exe install paramiko

3.安装过程中可能会报错:

执行以下命令更新下pip,然后继续第一步安装就哦了

pip install --upgrade pip

4:验证安装是否成功:打开cmd,进入python模式,输入import paramiko;无报错则代表成功;

2.热身:

SSH客户端:

1)基于用户名密码连接:

import paramiko #导入paramiko模块

#创建SSH对象
ssh = paramiko.SSHClient()
#允许链接不在know_hosts文件的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='192.168.1.1',port=22,username='cc',password='123123')
#执行命令
stdin,stdout,stderr = ssh.exec_command('df')
#获取命令结果
result = stdout.read()
#关闭连接
ssh.close()

2)基于公钥密钥连接:

准备工作:

1.linux下生成公钥密钥

该命令将在/root/.ssh目录下面产生一对密钥id_rsa和公钥id_rsa.pub。(若没有安装ssh,则需要执行yum install openssh-clients)

id_rsa.pub 公钥 ---改名为authorized_keys

ssh-keygen#执行后一路enter即可

2.将密钥copy到win下

代码:

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('id_rsa')  # 这里写密钥在win下的文件路径

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.1.15', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
#打印命令结果
print(result.decode())
# 关闭连接
ssh.close()

STFP客户端:

用于连接远程服务器并执行上传下载

1)基于用户名密码上传下载:

import paramiko

transport = paramiko.Transport(('hostname',22))
transport.connect(username='cc',password='123123') sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py') # 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path') transport.close()

2)基于公钥密钥下载:

前提步骤同上

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')

transport = paramiko.Transport(('hostname', 22))
transport.connect(username='wupeiqi', pkey=private_key ) sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path') transport.close()

 

最新文章

  1. SQLite剖析之存储模型
  2. zxing 一维码部分深入分析与实际应用,识别卡片数量,Android数卡器
  3. css三级下拉的导航栏
  4. RPi 2B USB 远程桌面
  5. 图片流滚动效果html代码(复制)
  6. 深入浅出Node.js (附录C) - Node编码规范
  7. C#获取变量名的扩展方法
  8. MySQL性能调优的方法
  9. Swing之JTable的详细介绍(转)
  10. eclipse 代码 editor 界面出现奇怪符号解决
  11. 芝麻HTTP:Scrapyd的安装
  12. WebView 安全之 addJavascriptInterface
  13. awk 复习
  14. 配置 Nginx 的目录浏览功能
  15. “Linux内核分析”实验报告
  16. MyEclipse启动时 弹出提醒框
  17. js改变表单的内容样式
  18. JS 获取css transform中的值
  19. ssm redis 数据字典在J2EE中的多种应用与实现
  20. LightOj 1265 - Island of Survival(概率)

热门文章

  1. 原生 CSS 网格布局学习笔记
  2. 【转】SpringMVC中DispatcherServlet配置中url-pattern 配置/*和/的区别
  3. linux中的输入从定向和输出重定向
  4. django url路径与模板中样式相对路径的问题
  5. oracle 密码有效期
  6. 洛谷P1462 通往奥格瑞玛的道路[二分答案 spfa 离散化]
  7. sqlserver 2008R2数据库迁移oracle
  8. linux解压包
  9. ajax 请求另一个html页面的指定的一部分 加载到本页面div
  10. 谈谈你对 Struts 2 的理解