一目了然系列之 用 mosh 代替 ssh 教程详解

0x00 介绍

ssh 用的是 tcp 协议来进行传输的,每个操作都要交互。对于高延迟高丢包的 vps 服务器来说就变得非常的不合适了,这里今天介绍一个用 udp 来实现的 ssh mosh。这里 mosh 必须在服务端与客户端都要安装才可以正常使用,还要在服务端开启一些 udp 端口。

0x01 环境

服务器系统:Centos 7
服务器防火墙: firewalld
客户端系统:deepin 15.10.1

0x02 安装mosh

需要在vps以及本机上都安装mosh

yum install mosh
# centos7 上安装

apt-get install mosh
# deepin debian ubuntu上面安装

也可以源码安装
$ git clone https://github.com/mobile-shell/mosh
$ cd mosh
$ ./autogen.sh
$ ./configure
$ make
# make install

0x03 防火墙设置

要在服务器的防火墙上面设置开启 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

0x04 使用说明

假设服务器地址为 192.168.99.99

ssh 私钥存放在 /home/ivo/.ssh/id_rsa

  • 没有更改ssh 22 端口的用法
mosh root@192.168.99.99
  • 没有更改ssh 22 端口,但是想用服务端某个特定的端口
    这种情况是在防火墙上面只开启了 60000-61000 中间的 1 个或几个端口比如只开启了 60010 这一个端口,那么用的时候在客户端上后面要加 -p 的参数
mosh -p 60010 root@192.168.99.99
  • 如果改动过ssh端口 22 改为 9999
mosh --ssh="ssh -p 9999" root@192.168.99.99
  • 如果改动过ssh端口 22 改为9999 还要用服务端 60010 udp 端口
mosh -p 60010 --ssh="ssh -p 9999" root@192.168.99.99
  • 不用密码使用的秘钥登录
mosh --ssh="/usr/bin/ssh -i /home/ivo/.ssh/id_rsa" root@192.168.99.99
  • 不用密码使用的秘钥登录,改 22 为 9999
mosh --ssh="/usr/bin/ssh -i /home/ivo/.ssh/id_rsa -p 9999" root@192.168.99.99
  • 不用密码使用的秘钥登录,改 22 为 9999,且使用服务端 60010 udp 端口
mosh -p 60010 --ssh="/usr/bin/ssh -i /home/ivo/.ssh/id_rsa -p 9999" root@192.168.99.99
上一篇
下一篇