# Mosh 基础使用指南

Mosh（Mobile Shell）是一个比传统 SSH 更强大的远程终端工具，特别适合移动和不稳定网络环境下的使用。

## 一、Mosh 简介

Mosh 的主要优势：
- 在网络切换或中断时保持连接
- 输入即时响应（无延迟显示）
- 预测性本地回显
- 更安全的连接方式

## 二、安装 Mosh

### 1. Linux 系统安装

```bash
# Ubuntu/Debian
sudo apt-get install mosh

# CentOS/RHEL
sudo yum install mosh

# Fedora
sudo dnf install mosh
```

### 2. macOS 安装

```bash
brew install mosh
```

### 3. Windows 使用
Windows 用户需要：
1. 安装 WSL 或 Cygwin
2. 在其中安装 mosh
3. 使用支持 mosh 的终端如 Windows Terminal

## 三、基本使用方法

### 1. 简单连接

```bash
mosh username@remote_host
```

### 2. 指定端口

```bash
mosh --ssh="ssh -p 2222" username@remote_host
```

### 3. 使用特定 SSH 密钥

```bash
mosh --ssh="ssh -i ~/.ssh/id_rsa" username@remote_host
```

## 四、常用参数

| 参数 | 说明 |
|------|------|
| `-p PORT` | 指定 UDP 端口范围（如 60000:61000） |
| `--predict=never` | 禁用预测性回显 |
| `--predict=always` | 总是使用预测性回显 |
| `--predict=adaptive` | 自适应预测（默认） |
| `--ssh="COMMAND"` | 指定 SSH 连接命令 |
| `-a` | 强制使用本地 IP 地址 |
| `-n` | 不初始化 SSH 会话（用于调试） |

## 五、高级用法

### 1. 通过跳板机连接

```bash
mosh --ssh="ssh -J jump_user@jump_host" user@target_host
```

### 2. 保持连接的后台会话

```bash
# 使用 tmux 或 screen 配合 mosh
mosh user@host -- tmux new -A -s session_name
```

### 3. 指定服务器上的 mosh-server 路径

```bash
mosh --server="/usr/local/bin/mosh-server" user@host
```

## 六、Mosh 与 SSH 的区别

1. **协议差异**：
   - SSH 使用 TCP
   - Mosh 使用 UDP（默认端口 60000-61000）

2. **连接恢复**：
   - SSH 断连后需要重新连接
   - Mosh 在网络恢复后自动重连

3. **输入响应**：
   - SSH 有输入延迟
   - Mosh 提供即时本地回显

## 七、防火墙配置

Mosh 需要 UDP 端口开放：
```bash
# 开放 UDP 60000-61000 端口
sudo ufw allow 60000:61000/udp
```

## 八、常见问题解决

### 1. 连接失败

```bash
# 确保服务器安装了 mosh
ssh user@host "which mosh-server"

# 检查 UDP 端口是否开放
telnet host 60000
```

### 2. 解决乱码问题

```bash
# 指定 UTF-8 编码
mosh --ssh="ssh -o SendEnv=LC_*" user@host
```

### 3. 提高连接速度

```bash
# 使用压缩
mosh --ssh="ssh -C" user@host
```

## 九、退出 Mosh 会话

退出方式与 SSH 相同：
1. 输入 `exit` 或 `logout`
2. 或者按 `Ctrl-D`

## 十、Mosh 客户端选项

查看所有选项：
```bash
mosh --help
```

Mosh 是替代 SSH 的优秀工具，特别适合网络不稳定环境下的远程工作。虽然配置略复杂，但提供的稳定性和用户体验提升值得投入时间学习。