前期准备
提示:windows环境,python编辑器,代码基础是必备的
前言
突然想有一个自己的SSH工具,一顿百度+文心一言就有了信心,虽然做不出XShell,finalshell这种高难度的产品,但是打造一款属于自己的简单SSH应对日常工作需求好像是有能力的,为了不让自己懈怠,决定将每一步都发布出去来鞭策自己
一、Paramiko
Paramiko是Python中最流行和最广泛使用的SSH库。它提供了客户端和服务器功能,因此可以使用它连接到远程SSH服务器,甚至在Python中启动自己的SSH服务器
Paramiko提供了我认为的SSH四大基础功能:
- 建立SSH连接:Paramiko可以通过IP和端口号建立与远程SSH服务器的连接。
- 用户认证:它支持多种用户认证方式,包括口令认证和公钥认证。通过使用密钥对象,可以完成SSH公钥认证
- 执行远程命令:Paramiko可以通过SSH连接执行远程命令,类似于Linux的ssh命令。这是通过封装SSH会话和通道实现的。
- 文件传输:它还支持文件传输功能,可以在本地和远程服务器之间安全地传输文件
因此我打算采用Paramiko做SSH工具底层功能的实现
二、PyQt6
SSH工具可视化是最必不可缺的,一般而言有两种可视化方法,一是用python的GUI库,二是用Web技术或其他语言写界面
对于我这种新手小白,用Web技术虽然方便,但是无法保证请求的安全性,因此选用python的GUI库
我打算选用PyQt6
PyQt6是一个用于创建图形用户界面(GUI)的Python库,提供了丰富的控件和布局方式,可以设计出美观、直观的用户界面,具有良好的跨平台性,可以在Windows、Linux、MacOS等操作系统上运行,从而满足不同设备的需求,有着丰富的学习资源和活跃的社区支持。
三、通信机制
为了增强可读性和可扩展性,需要模块化处理,将界面和SSH实现各自作为独立模块,这样就需要两者进行通信,通信机制的选择尤为重要
考虑到安全因素,界面将数据加密后用pyqt6槽函数发数据给通信模块,通信模块再转发到SSH模块处理。
鉴于安全性,通信模块不采用网络通信,仅用本地通信,在权衡利弊后打算选用socket通信。
四、加解密机制
SSH连接有一套SSH协议的认证机制,因此我们只需要考虑界面传输给SSH和SSH反馈数据传输给界面时的数据安全性,明文不太安全,因此需要加解密操作
加解密算法很多,而且实现难度都不低,因此还未想好自己处理加解密,暂时先不考虑加解密
总结
开始的第一天,先想想技术栈,用那些库,需要准备什么?学习什么?