Mosh表示移动Shell(Mobile Shell),是一个用于从客户端跨互联网连接远程服务器的命令行工具。它能用于SSH连接,但是比Secure Shell功能更多。它是一个类似于SSH而带有更多功能的应用。程序最初由Keith Winstein 编写,用于类Unix的操作系统中,发布于GNU GPL V3协议下。
Mosh最大的特点是基于UDP方式传输,支持在服务端创建一个临时的Key供客户端一次性连接,退出后失效;也支持通过SSH的配置进行认证,但数据传输本身还是自身的UDP方式。
另外,Mosh还有两个我觉得非常有用的功能
centos7 上安装
yum install mosh
deepin debian ubuntu 上安装
apt-get install mosh
源码安装
$ git clone https://github.com/mobile-shell/mosh
$ cd mosh
$ ./autogen.sh
$ ./configure
$ make
# make install
要在服务器的防火墙上面设置开启 60000 到 61000 upd 端口。mosh 不安全的一点就在于这里它服务端的端口是固定的这个范围。默认是从 60000 开始然后 +1 的增加。比如第一个连接是 60001,这个连接没断后面就会是 60002 端口连接,以此类推。
现在开始设置服务端防火墙
如果是 iptables
sudo iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT
如果是 ufw
sudo ufw allow 60000:61000/udp
我的是 firewalld
# 先确定活动区域
[root@ivoivo ~]# firewall-cmd --get-active-zones
public
interfaces: eth0
# 编辑防火墙规则
[root@ivoivo ~]# firewall-cmd --permanent --zone=public --add-port=60000-61000/udp
# 让防火墙生效
[root@ivoivo ~]# firewall-cmd --reload
先需要在服务端创建Key,然后客户端通过这个Key进行登录,该Key会在会话结束十分钟后自动失效。
创建一个临时的Key和端口供Client登录
$ mosh-server
MOSH CONNECT 60001 S7KI+lnT56j4efWRhMc23g
mosh-server (mosh 1.3.2) [build mosh 1.3.2]
Copyright 2012 Keith Winstein <mosh-devel@mit.edu>
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[mosh-server detached, pid = 141741]
定义好MOSH_KEY的值
$ export MOSH_KEY=S7KI+lnT56j4efWRhMc23g
使用临时Key进行登陆
$ mosh-client 10.1.1.1 60001
$ exit
logout
[mosh is exiting.]
注:mosh-client后面只能跟服务器具体的IP地址和临时端口,不支持主机名或域名方式
假设服务器地址为 10.1.1.1
ssh 私钥存放在 /root/.ssh/id_rsa
mosh root@10.1.1.1
mosh -p 60010 root@10.1.1.1
mosh --ssh="ssh -p 2500" root@10.1.1.1
mosh -p 60010 --ssh="ssh -p 2500" root@10.1.1.1
mosh --ssh="/usr/bin/ssh -i /root/.ssh/id_rsa" root@10.1.1.1
mosh --ssh="/usr/bin/ssh -i /root/.ssh/id_rsa -p 2500" root@10.1.1.1
mosh -p 60010 --ssh="/usr/bin/ssh -i /root/.ssh/id_rsa -p 2500" root@10.1.1.1
引用
https://mosh.org/
https://www.hi-linux.com/posts/23118.html
原文:https://www.cnblogs.com/lovesKey/p/12323517.html