堡垒机python下ssh的使用

【堡垒机更多参考】http://www.cnblogs.com/alex3714/articles/5286889.html

【paramiko的Demo实例】https://github.com/paramiko/paramiko

Win7下paramiko的Demo远程登录执行交互命令:

【下载Demo文件】     https://github.com/paramiko/paramiko

【paramiko更多参考】paramiko模块学习

本机[win7]登录远程Linux服务器

Win7本机IP:  192.168.2.102

远程服务器IP: 192.168.2.105

关于Win7下执行原代码报错问题的解决:

错误现象:TypeError: write() argument must be str, not bytes

问题解决:F:\Django\paramiko-demo\paramiko-master\demos\interactive.py

Linux下paramiko的Demo远程登录执行交互命令:

下载Demo文件

https://github.com/paramiko/paramiko

上传文件到本机Linux服务器:

omc@omc-virtual-machine:~$  cd paramiko_demo/
omc@omc-virtual-machine:~/paramiko_demo$  ll

Linux登录其他的Linux服务器

Linxu本机IP:  192.168.25.110

远程服务器IP: 192.168.25.133

omc@omc-virtual-machine:~/paramiko_demo$  python3 demo.py
Hostname: 192.168.25.133
*** Unable to open host keys file
*** WARNING: Unknown host key!
Username [omc]: root
Auth by (p)assword, (r)sa key, or (d)ss key? [p]  p
Password for root@192.168.25.133:
*** Here we go!
Last login: Tue May  1 07:53:03 2018 from 192.168.25.110
[root@localhost ~]# 

omc@omc-virtual-machine:~/paramiko_demo$ ssh  root@192.168.25.133
The authenticity of host '192.168.25.133 (192.168.25.133)' can't be established.
RSA key fingerprint is SHA256:+v73ij2IHBzxee8o9n5rYkBJPwD96SaEBtxkuGBBCqg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.25.133' (RSA) to the list of known hosts.
root@192.168.25.133's password:
Last login: Tue May  1 07:44:47 2018 from 192.168.25.1
[root@localhost ~]# logout
Connection to 192.168.25.133 closed.
omc@omc-virtual-machine:~/paramiko_demo$ python3 demo.py
Hostname: 192.168.25.133
*** Host key OK.
Username [omc]: root
Auth by (p)assword, (r)sa key, or (d)ss key? [p] p
Password for root@192.168.25.133:
*** Here we go!

注意:区别于第一次登录,第二次登录可以获取的133服务器的信息,没有了告警

paramiko的Demo分析以及改进

demo.py

interactive.py

paramiko的interactive改进:

import socket
import sys
import time
from paramiko.py3compat import u
# windows does not have termios...
try:import termiosimport ttyhas_termios = True
except ImportError:has_termios = False
def interactive_shell(chan):  # chan应该是个连接的实例if has_termios:  # 判断win还是Linuxposix_shell(chan)  # posix是Linux下的协议标准else:windows_shell(chan)def posix_shell(chan):  # chan 就是我们建立的连接实例import select  # IO多路复用,获取事件时会一个个的进行进行搜寻,直到找到那个事件oldtty = termios.tcgetattr(sys.stdin)try:tty.setraw(sys.stdin.fileno())tty.setcbreak(sys.stdin.fileno())chan.settimeout(0.0)cmd = []f = open('cmd.log', 'a')while True:  # select循环监测r, w, e = select.select([chan, sys.stdin], [], [])  # 3个参数分别为输入,输出,错误信息if chan in r:  # 如果远程有返回命令的结果,进行结果输出try:x = u(chan.recv(1024))  # 每次接收1KB的长度if len(x) == 0:  # 长度为0,表示没有接收到sys.stdout.write('\r\n*** EOF\r\n')breaksys.stdout.write(x)  # 接收到的结果写入屏幕sys.stdout.flush()  # 实时将内容刷入标准输出[屏幕]except socket.timeout:passif sys.stdin in r:  # 标准输入,即键盘输入x = sys.stdin.read(1)  # read()函数,输入一个读取一个发送一个[回车代表命令输入完成可以执行任务]if(x == '\r'):   # Linux下的回车是\r# print("".join(cmd))cmd_log_format = "%s-%s-%s\r" % (time.ctime(time.time()), 'root', "".join(cmd))f.write(cmd_log_format)cmd = []  # 情况作为下次使用else:cmd.append(x)if len(x) == 0:breakchan.send(x)  # 如果读到了输入内容,则发送到远程进行操作finally:termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)# thanks to Mike Looijmans for this code
def windows_shell(chan):import threadingsys.stdout.write("Line-buffered terminal emulation. Press F6 or ^Z to send EOF.\r\n\r\n")def writeall(sock):while True:data = sock.recv(256)if not data:sys.stdout.write('\r\n*** EOF ***\r\n\r\n')sys.stdout.flush()breaksys.stdout.write(data.decode("utf-8"))sys.stdout.flush()writer = threading.Thread(target=writeall, args=(chan,))writer.start()try:while True:d = sys.stdin.read(1)if not d:breakchan.send(d)except EOFError:# user hit ^Z or F6pass

注:记录了文件,但是由点小bug,就是文件会记录下左右移动的操作[此时会转换为二进制的内容]

转载于:https://www.cnblogs.com/ftl1012/p/9458889.html

审计系统---堡垒机python下ssh的使用相关推荐

  1. 审计系统---堡垒机项目之表结构设计

    [更多参考] https://github.com/317828332/CrazyEye 缺点: 界面丑陋, 只能追踪命令,命令的解析还不是很完善,不能明了的展示 对于文件的上传[rz],下载[sz] ...

  2. 常见安全设备总结(IDS、IPS、上网行为管理、网闸、漏扫、日志审计、数据库审计、堡垒机等)

    常见安全设备总结(IDS.IPS.上网行为管理.网闸.漏扫.日志审计.数据库审计.堡垒机等) 一.网络结构 二.防火墙.IPS 1.防火墙 2.IPS 三.上网行为管理.网闸 1.上网行为管理 2.网 ...

  3. 堡垒机如何传输文件_堡垒机环境下使用putty传输文件

    堡垒机环境下使用putty传输文件 发布时间:2018-11-14 21:10, 浏览次数:1167 , 标签: putty 本文参考: https://www.cnblogs.com/bamanzi ...

  4. [How TO]-堡垒机快捷登陆SSH服务器-expect自动输密码

    你还在为登录服务器多次输入密码发愁吗? 你还在为"每一次新开一个窗口 ,就要先敲堡垒机密码.再敲ssh服务器密码"而发愁吗? 下面一段使用expect编写的代码,为你解决上述问题 ...

  5. Mobaxterm通过代理方式跳过堡垒机实现远程ssh登录

    一.背景介绍: 如上图所示,一般情况下,客户端A登录远程服务器C,需要先登录至跳板机B,然后在跳板机B再ssh远程登录至服务器C. 二.配置目的 实现从客户端A直接登录远程服务器C,无需通过跳板机跳转 ...

  6. jumpserver堡垒机 (资源)

    23.5 jumpserver介绍 • 官网www.jumpserver.org • 跳板机概述: 跳板机就是一台服务器,开发戒运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标 设备迚 ...

  7. jumpserver堡垒机 (资源

    23.5 jumpserver介绍 • 官网www.jumpserver.org • 跳板机概述: 跳板机就是一台服务器,开发戒运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标 设备迚 ...

  8. 运维堡垒机(跳板机)系统 python

    相信各位对堡垒机(跳板机)不陌生,为了保证服务器安全,前面加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有 身份认证,授权,访问控制,审计等功能,笔者用Python基本实现了上述功能. A ...

  9. python系统工作原理_Python之路——堡垒机原理及其简单实现

    1 堡垒机基本概述 其从功能上讲,它综合了核心系统运维和安全审计管控两大主干功能,从技术实现上讲,通过切断终端计算机对网络和服务器资源的直接访问,而采用协议代理的方式,接管了终端计算机对网络和服务器的 ...

最新文章

  1. 微信小程序之录音与播放功能(完整示例demo)
  2. 涉密计算机用户账号设置审批表,北京邮电大学涉密计算机配置审批表.PDF
  3. java 加密算法 base64
  4. 使用Area(区域)会遇到的问题
  5. 我的MYSQL学习心得(一)
  6. 论文阅读笔记(一)【Journal of Machine Learning Research】Natural Language Processing (Almost) from Scratch(未完)
  7. 30.课时30.【Django模板】autoescape标签使用详解(Av61533158,P30)
  8. Web开发:Apache2.2.x+Tomcat6.x+jk2.x做集群配置
  9. 如何在 iOS 15 和 macOS Monterey 的 Safari 中隐藏 IP 地址?
  10. 阿里云keepalived的虚拟ip怎么让外网访问_Nginx之Keepalived高可用工具
  11. 哈利波特:哈迷们集合啦
  12. Flutter 安卓 Platform 与 Dart 端消息通信方式 Channel 源码解析
  13. Android9.0系统源码_编译刷机——从下载到编译
  14. VSCode常见问题汇总(持续更新中)
  15. 【动漫风格迁移】基于AnimeGAN的安卓APP工具
  16. android imageview 锯齿,[置顶] android 自定义圆角ImageView以及锯齿的处理
  17. 好用的Mac视频下载软件--Downie 4
  18. 制作淘宝客微信公众号(二)
  19. 如何高效地学习开源项目 |“华仔,放学别走”
  20. 论文导读:A Diversity-Promoting Objective Function for Neural Conversation Models

热门文章

  1. 二进制安全与MySQL的关系_《高可用MySQL》节选 -- 安全和二进制日志
  2. JAVA WEB开发实战-张晨光-专题视频课程
  3. 织梦自定义图片字段和缩略图一样_DedeCMS系统自定义字段的图片调用
  4. 《白帽子将Web安全》摘抄
  5. PostgreSQL递归查询
  6. java 面试心得总结-BAT、网易
  7. Ajax结合json在web中的应用
  8. sklearn综合示例7:集成学习与随机森林
  9. 深入理解Spark 2.1 Core (八):Standalone模式容错及HA的原理与源码分析
  10. [swift 进阶]读书笔记-第八章:错误处理 C8P2 错误和函数参数