Appearance
autossh 配置决策记录
这份文档用于记录本套配置中的关键选择,以及为什么这样选。
1. 为什么选 autossh
决策:
- 使用
autossh,而不是只用普通ssh
原因:
- 目标是长期挂一个 SSH 隧道
- 普通
ssh断开后不会自动恢复 autossh更适合做长期稳定连接- 更适合配合 macOS 的
launchd
结论:
- 对“本地长期 SOCKS 代理”这个场景来说,
autossh是更合适的选择
2. 为什么使用本地 SOCKS 代理
决策:
- 使用
-D 1080开启本地 SOCKS5 代理
原因:
- 目标是让本机通过 SSH 隧道访问外部网络
- SOCKS5 方式更灵活
- 很多工具和浏览器都能直接使用本地 SOCKS 代理
结论:
- 当前方案的本质是:通过远端机器提供本机网络出口
3. 为什么选 1080 端口
决策:
- 初始默认端口使用
1080
原因:
1080是 SOCKS 代理常见端口- 容易记忆
- 对单实例场景足够清晰
补充:
- 如果本机已有端口占用,也可以改为
7890、1081等其他端口
结论:
1080不是强制要求,而是一个合理的默认值
4. 为什么建议加保活参数
决策:
- 使用:
ServerAliveInterval=30ServerAliveCountMax=3ExitOnForwardFailure=yes
原因:
- 更快发现失效连接
- 避免表面启动成功、实际代理没起来
- 让
autossh的重连机制更及时生效
结论:
- 这组参数可以显著提升长期运行稳定性
5. 为什么建议做 SSH 免密登录
决策:
- 建议配置 SSH key 登录
原因:
- 开机自启通常不能依赖人工输密码
- 否则
launchd托管服务很容易卡住或失败
结论:
- 免密登录几乎是“稳定开机自启”的前置条件
6. 为什么用 LaunchAgent
决策:
- 使用
~/Library/LaunchAgents/com.autossh.socks1080.plist
原因:
- 这是 macOS 用户级自启动的标准方式
- 适合登录后自动拉起
- 便于和
launchctl配合管理
结论:
- 对当前用户自己的代理需求来说,
LaunchAgent是自然选择
7. 为什么推荐 bootstrap/bootout
决策:
- 日常管理命令优先使用:
launchctl bootstraplaunchctl bootout
原因:
load/unload是旧写法- 新写法更符合现代 macOS
launchd模型 - 指定
gui/$(id -u)更明确
结论:
- 现有配置不需要重做,但后续管理命令建议统一迁移到新写法
8. 为什么现有配置不需要重配
决策:
- 不重写现有
plist
原因:
- 已经验证服务可以正常加载
- 本地
1080已在监听 - 日志中没有明显错误
- 说明配置本身已经可用
结论:
- 新旧命令差异主要在管理方式,不代表已有配置失效
9. 为什么要在 ~/.zshrc 中加函数
决策:
- 把常用管理动作封装成 shell 函数
原因:
- 平时最常用的操作很固定
- 原始
launchctl命令偏长 - 简化后更方便日常维护和排障
结论:
- 这是为了提高使用体验,不是功能必需项,但非常推荐
10. 为什么后面补了这么多文档
决策:
- 把单次问答扩展为文档目录
原因:
- 后续查找更方便
- 可以支持复用、交接、扩展到多实例
- 避免以后重复整理同样的问题
结论:
- 这套资料已经不只是一次配置记录,而是一套可持续使用的
autossh知识库