Skip to content

autossh 命令速查表

这份文档只保留常用命令,尽量不写解释,适合快速复制使用。

1. 安装

bash
brew install autossh
which autossh

2. 测试 SSH

bash
ssh your_user@100.x.x.x

3. 生成 SSH 密钥

bash
ssh-keygen -t ed25519

4. 复制公钥到远端

bash
ssh-copy-id your_user@100.x.x.x

5. 手动后台启动代理

bash
autossh -M 0 -f -N -D 1080 \
  -o "ServerAliveInterval 30" \
  -o "ServerAliveCountMax 3" \
  -o "ExitOnForwardFailure yes" \
  your_user@100.x.x.x

6. 查看 1080 端口

bash
lsof -i :1080

7. 查看错误日志

bash
cat /tmp/autossh-socks1080.err

8. 测试 SOCKS 代理

bash
curl --socks5 127.0.0.1:1080 https://ifconfig.me

9. 创建 LaunchAgents 目录

bash
mkdir -p ~/Library/LaunchAgents

10. 旧写法加载与卸载

bash
launchctl load ~/Library/LaunchAgents/com.autossh.socks1080.plist
launchctl unload ~/Library/LaunchAgents/com.autossh.socks1080.plist

11. 新写法加载与卸载

bash
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.autossh.socks1080.plist
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.autossh.socks1080.plist

12. 查看服务

bash
launchctl list | grep autossh
launchctl print gui/$(id -u)/com.autossh.socks1080

13. 建议加入 ~/.zshrc 的函数

bash
AUTOSSH_PLIST="$HOME/Library/LaunchAgents/com.autossh.socks1080.plist"
AUTOSSH_DOMAIN="gui/$(id -u)"
AUTOSSH_LABEL="com.autossh.socks1080"
AUTOSSH_OUT_LOG="/tmp/autossh-socks1080.out"
AUTOSSH_ERR_LOG="/tmp/autossh-socks1080.err"

autossh-start() {
  launchctl bootstrap "$AUTOSSH_DOMAIN" "$AUTOSSH_PLIST"
}

autossh-stop() {
  launchctl bootout "$AUTOSSH_DOMAIN" "$AUTOSSH_PLIST"
}

autossh-reload() {
  launchctl bootout "$AUTOSSH_DOMAIN" "$AUTOSSH_PLIST" 2>/dev/null
  launchctl bootstrap "$AUTOSSH_DOMAIN" "$AUTOSSH_PLIST"
}

autossh-status() {
  echo "== launchctl =="
  launchctl print "$AUTOSSH_DOMAIN/$AUTOSSH_LABEL" 2>/dev/null || echo "service not loaded"
  echo
  echo "== port 1080 =="
  lsof -i :1080
}

autossh-log() {
  echo "== stdout: $AUTOSSH_OUT_LOG =="
  [ -f "$AUTOSSH_OUT_LOG" ] && tail -n 50 "$AUTOSSH_OUT_LOG" || echo "no stdout log"
  echo
  echo "== stderr: $AUTOSSH_ERR_LOG =="
  [ -f "$AUTOSSH_ERR_LOG" ] && tail -n 50 "$AUTOSSH_ERR_LOG" || echo "no stderr log"
}

autossh-log-follow() {
  touch "$AUTOSSH_OUT_LOG" "$AUTOSSH_ERR_LOG"
  tail -f "$AUTOSSH_OUT_LOG" "$AUTOSSH_ERR_LOG"
}

14. 重新加载 shell 配置

bash
source ~/.zshrc

15. 快捷函数使用

bash
autossh-start
autossh-stop
autossh-reload
autossh-status
autossh-log
autossh-log-follow

16. 前台排查命令

bash
autossh -M 0 -N -D 1080 \
  -o "ServerAliveInterval 30" \
  -o "ServerAliveCountMax 3" \
  -o "ExitOnForwardFailure yes" \
  your_user@100.x.x.x