开源超级终端PuTTY改进之:增加点对点网络协议IocHub,实现跨网段远程登录

目录

前言

上一篇博客中,实现CH343PT库对PuTTY增加串口自动枚举及友好名称功能。这次为了方便实现跨网段的网络通讯,增加IoCHub协议。

IocHub简介

IocHub(Internet of Chip Hub)为开发者提供了多平台的MCU接口联网透传开发库,该方案来自于南京沁恒微电子公司(WCH),开发库包含Windows、Linux、MCU等多平台的的接口,实现了多平台跨网段的 透传。重点 :经向厂商咨询,该方案不涉及中间服务器,意味着透传数据安全得到保障!

官方介绍:
沁恒芯云---IoCHub互联方案

IocHub库地址:https://www.wch.cn/downloads/WCHIoCHubLib_MultiOS_ZIP.html

实现效果

此次改进将为原PuTTY增加IoCHub客户端,使其能够作为IoCHUB节点使用。

无需公网IP,无需进行复杂内外网映射,实现Windows电脑跨网段登陆远端Linux:

开源地址

本项目的Linux源码以及Windows中使用的PuttyPlus已经开源至GitCode。

IocHub_Server_Linux
PuttyPlus

使用方式

使用方式主要分为两种,使用真实串口设备进行桥接、使用socat生成虚拟串口对。

使用实际硬件设备(推荐)

本次使用CH9114,USB转4串,四个串口均支持最高连续15M波特率 。完全满足远程登陆需求。

具体使用步骤:

  1. 将CH9114前两组串口相互短接,并安装驱动:
bash 复制代码
​​ttyCH343USB0       ttyCH343USB1
TX ──────────────────── RX
RX ──────────────────── TX

CH9114 Linux驱动:
https://github.com/WCHSoftGroup/ch343ser_linux

  1. 插入设备后检查串口节点正常生成
bash 复制代码
ls /dev/ttyCH343USB*
/dev/ttyCH343USB0  /dev/ttyCH343USB1  /dev/ttyCH343USB2  /dev/ttyCH343USB3
  1. /dev/ttyCH343USB0绑定Linux Bash并设置开机自启(仅需设置一次即可):
    3.1 安装getty服务 sudo apt install getty
    3.2 创建systemd服务 serial-ttyCH343USB0.service
bash 复制代码
[Unit]
Description=Serial Getty on ttyCH343USB0
Documentation=man:agetty(8)
Documentation=man:systemd-getty-generator(8)
After=systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service

[Service]
ExecStart=-/sbin/agetty --keep-baud 15000000,115200 ttyCH343USB0 vt102
Type=idle
Restart=always
UtmpIdentifier=ttyCH343USB0
TTYPath=/dev/ttyCH343USB0
TTYReset=yes
TTYVHangup=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes

[Install]
WantedBy=getty.target
bash 复制代码
# 使能并启用
sudo systemctl enable serial-ttyCH343USB0.service
sudo systemctl start serial-ttyCH343USB0.service
# 查询systemd服务状态,显示running则为正常
sudo nano /etc/systemd/system/serial-ttyCH343USB0.service
  1. 开启SerialToIocHub程序,
bash 复制代码
# 将IoCHub服务绑定至/dev/ttyCH343USB1串口,将显示IocHub local id
 ./SerialToIocHub -c /dev/ttyCH343USB1 -lp 123456
  1. 远端Windows打开PuttyPlus软件,输入Linux中IocHub local id,密码123456,即可登录Linux。

使用虚拟串口

使用虚拟串口对的好点是配置简单方便,缺点则是不够稳定。

具体使用步骤:

  1. 打开一个终端,输入socat PTY,link=/tmp/vserial0,raw,echo=0 PTY,link=/tmp/vserial1,raw,echo=0创建一对虚拟串口;
  2. 在另一个终端中,输入socat /tmp/vserial0 EXEC:"script -q -c /bin/bash /dev/null",pty,echo=0,连接/tmp/vserial0与bash输出;
  3. 将IoCHub绑定至/tmp/vserial1 ./SerialToIocHub -c /tmp/vserial1 -lp 123456
  4. 打开Windows PuttyPlus软件,输入Linux中IocHub local id,密码123456,即可登录Linux。

写在最后

  1. 使用过程中请保持SerialToIocHub程序的后台运行。
  2. PuttyPlus支持保存连接设置,无需每次重复输入id及密码。
相关推荐
xywww1682 小时前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
梦想的颜色5 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
sdghterhd7 小时前
WebSocket 快速入门教程(附示例源码)
网络·websocket·网络协议
donoot7 小时前
Linux系统下图书馆级电子书全自动标准化分类整理完整实施方案
大数据·linux·运维·电子书管理
LuDvei7 小时前
STM32串行通信DMA的使用
stm32·单片机·嵌入式硬件
xy34537 小时前
Wireshark捕获过滤器——语法元素详解
网络·测试工具·渗透测试·wireshark
ITKEY_8 小时前
macOS brew 安装的nginx 文件在哪里?
运维·nginx·macos
似是燕归来8 小时前
嵌入式工程师进阶指南:适配器编程设计模式一
c语言·stm32·适配器模式·嵌入式开发
2401_854151558 小时前
STM32 I2C 通信 HAL 库踩坑记录
stm32·单片机·嵌入式硬件
Elastic 中国社区官方博客8 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎