使用UDP连接ssh

使用UDP连接ssh

mosh简介

Mosh最大的特点是基于UDP方式传输,支持在服务端创建一个临时的Key供客户端一次性连接,退出后失效;也支持通过SSH的配置进行认证,但数据传输本身还是自身的UDP方式。

Mosh还有两个我觉得非常有用的功能

  • 会话的中断不会导致当前正在前端执行的命令中断,相当于你所有的操作都是在tmux会话中一样在后台执行。
  • 会话在中断过后,不会立刻退出,而是启用一个计时器,当网络恢复后会自动重新连接,同时会延续之前的会话,不会重新开启一个。

两端安装mosh

文档参考:https://www.cnblogs.com/sunweiye/p/12003616.html

mosh项目简介:https://github.com/mobile-shell/mosh/wiki/Debugging-and-Theory

shell 复制代码
# rhel安装mosh
yum install mosh -y

# macOS安装mosh
brew insatll mosh

# 检查Mosh的版本
mosh --version

Windows安装mosh

需要依赖msys2pacman包管理器安装

shell 复制代码
# msys2安装mosh
pacman -S mosh

放行端口

Mosh使用的UDP协议连接的,使用的端口是从60000到61000,如果开启了防火墙服务器上就需要打开相应的UDP端口。一个Mosh连接就会打开一个UDP端口,比如建立两个连接就是60001、60002,以此类推。

假设Mosh使用60001 UDP端口

shell 复制代码
# 放行UDP/60001端口
 iptables -I INPUT -p udp --dport 60001 -j ACCEPT

使用mosh登录Linux

shell 复制代码
# 和ssh完全一样,速度非常快
mosh user@server_ip

debug

shell 复制代码
# debug模式
mosh --ssh="ssh -vvv" user@server_ip