实时警报通知:微信告警通知的重要性解析
2431
2023-02-11
使用Mosh来优化SSH连接
什么是Mosh
Mosh最大的特点是基于UDP方式传输,支持在服务端创建一个临时的Key供客户端一次性连接,退出后失效;也支持通过SSH的配置进行认证,但数据传输本身还是自身的UDP方式。
另外,Mosh还有两个我觉得非常有用的功能
会话的中断不会导致当前正在前端执行的命令中断,相当于你所有的操作都是在screen命令中一样在后台执行。会话在中断过后,不会立刻退出,而是启用一个计时器,当网络恢复后会自动重新连接,同时会延续之前的会话,不会重新开启一个。
Mosh的功能
Mosh安装配置
Mosh需要同时在服务器端与客户端上安装,这是一件非常简单的事情。
Linux中安装Mosh
在Debian、Ubuntu 和Mint 类似的系统中,你可以很容易地用apt-get包管理器安装。
1 2 | $apt-get update $apt-get install mosh |
在基于RHEL/CentOS/Fedora的系统中,要使用yum包管理器安装mosh,你需要打开第三方的EPEL。
1 2 | $yum update $yum install mosh |
在Fedora 22+的版本中,你需要使用dnf包管理器来安装Mosh。
1 | $dnf install mosh |
MAC中安装Mosh
1 2 | $brew install mosh $brew install--HEAD mosh#安装git最新版本 |
注:目前Mosh的最新版本是1.2.4,这个版本有一个小问题就是不会汇报鼠标事件,如果你在远程的VIM或者tmux等支持鼠标事件的程序中喜欢用滚轮或者触摸屏滚动屏幕的话,可能会有点不习惯。如果不能忍可以自己编译安装Git里的最新版本的Mosh。
检查Mosh的版本
你可以输入exit来退出Mosh会话。
1 | exit |
Mosh参数说明
Mosh支持很多选项,你可以用下面的方法看到
Mosh远程连接
Mosh使用的UDP协议连接的,使用的端口是从60000到61000,如果开启了防火墙服务器上就需要打开相应的UDP端口。一个Mosh连接就会打开一个UDP端口,比如建立两个连接就是60001、60002,以此类推。
假设Mosh使用60001 UDP端口,则在服务器上运行
1 | $iptables-IINPUT-pudp--dport60001-jACCEPT |
这样就在服务器上打开60001这个UDP端口。当然,最好是把上一条命令写入服务器iptables的规则中,这样不必要每次都手动打开这个端口。
Mosh的使用
使用Mosh登录远程Linux服务器
1 | $mosh USERNAME@IP |
指定开启的端口
客户端进行连接时指定端口并开启端口,默认端口从60001开始开启。接下来就是从客户端连接,如下:
1 2 | # 如果原来连接服务器是采用密码的方式登录,会提示输入密码,如果ssh已经做好了密钥认证,则可以直接连接 $mosh-p60001用户名@ip地址 |
注:p参数用于指定UDP端口。
采用SSH配置进行认证
假如你的SSH连接设置公钥/私钥连接,比如ssh hi-linux即可直接连接服务器而无需输入密码,则mosh命令也可以以mosh hi-linux的形式连接,基本上,可以把它当作ssh命令的替换,只不过SSH开的是TCP口,Mosh开的是UDP口。
指定服务端SSH开启的端口
假设服务端开始的端口是2222
1 | $mosh--ssh="ssh -p 2222"用户@服务器IP |
如果私钥不在默认的目录
1 | $mosh--ssh="~/bin/ssh -i ./identity"用户@服务器IP |
如果服务端修改过SSH的端口,或需要指定单独的SSHKEY,可以通过--ssh参数的方式
1 | $mosh--ssh="ssh -i /home/dong.guo/.ssh/oozie -p 2222" |
采用临时Key的方式进行一次性认证
先需要在服务端创建Key,然后客户端通过这个Key进行登录,该Key会在会话结束十分钟后自动失效。
创建一个临时的Key和端口供Client登录
定义好MOSH_KEY的值
1 | $export MOSH_KEY=hNpGrd5rzRrfP47LQEizJw |
使用临时Key进行登陆
1 2 3 4 | $mosh-client192.168.92.12860001 $exit logout [mosh isexiting.] |
注:mosh-client后面只能跟服务器具体的IP地址和临时端口,不支持主机名或域名方式
总结
Mosh是一款在大多数linux发行版的仓库中可以下载的一款小工具。虽然它有一些差异尤其是安全问题和额外的需求,它的功能,比如漫游后保持连接是一个加分点。我的建议是任何一个使用SSH的Linux用户都应该试试这个程序,Mosh值得一试。
Mosh的优缺点
Mosh有额外的需求,比如需要允许UDP 直接连接,这在SSH不需要。动态分配的端口范围是60000-61000。第一个打开的端口是分配好的。每个连接都需要一个端口。默认的端口分配是一个严重的安全问题,尤其是在生产环境中。支持IPv6连接,但是不支持IPv6漫游。不支持回滚。不支持X11转发。不支持ssh-agent转发。
参考文档
发表评论
评论列表