本文记录常见部署任务的 sshc 命令组合。示例主机统一使用 devhost。
sshc run devhost -- hostname
sshc run devhost -- uptime
sshc run devhost -- "pwd && whoami"上传单个文件并校验 sha256:
sshc scp -l tmp/pkg.tar.gz -r /tmp/pkg.tar.gz devhost --sha256上传构建目录,上传前清理远端目录:
sshc scp -l ./dist -r /opt/app/dist devhost --remove-dir上传多个 jar 文件:
sshc scp -l "./dist/*.jar" -r /opt/app/lib devhostsshc run devhost -- "mkdir -p /opt/app && tar -xzf /tmp/pkg.tar.gz -C /opt/app"如需在目标目录下执行命令:
sshc run devhost --cwd /opt/app -- "ls -lah && ./bin/app --version"复杂部署逻辑建议放在本地脚本中,再通过 --script 上传执行,避免多层 shell 转义。
多行 shell、here-doc、source 激活虚拟环境、复杂引号拼接等场景优先使用 --script。
sshc run devhost --script ./scripts/deploy.sh --cwd /opt/app例如复杂检查脚本可以直接本地保存后远端执行:
sshc run devhost --script ./scripts/check-service.sh --cwd /opt/app --timeout 60s调试脚本时保留远端临时脚本:
sshc run devhost --script ./scripts/deploy.sh --keep-remote-script如果远端 /tmp 有 noexec、权限或清理策略限制,可以指定远端临时脚本目录:
sshc run devhost --script ./scripts/deploy.sh --remote-script-dir /opt/app/tmp需要 root 权限时:
sshc run devhost --sudo -- systemctl restart app.service切换到应用用户执行:
sshc run devhost --sudo-user app --cwd /opt/app -- ./bin/app migrate
sshc run devhost --script ./scripts/migrate.sh --sudo-user app --remote-script-dir /opt/app/tmp--sudo 和 --sudo-user 需要远端支持免密 sudo,或当前 SSH 用户已经是 root。
使用 --script --sudo-user 时,远端临时脚本会设置为本机远端用户可读;脚本包含敏感内容时,建议配合 --remote-script-dir 使用权限受控的目录。
给远端命令设置超时,并在超时后等待 30 秒再强制清理:
sshc run devhost --timeout 600s --kill-after 30s -- ./scripts/upgrade.sh远端主机需要提供 timeout 命令,一般来自 coreutils。
sshc run devhost -- "systemctl status app.service --no-pager"
sshc run devhost -- "systemctl is-active app.service"sshc run devhost -- "journalctl -u app.service --no-pager -n 100"
sshc run devhost -- "tail -n 100 /var/log/app/app.log"sshc run devhost -- "curl -fsS http://127.0.0.1:18080/health"sshc download -r /var/log/app/app.log -l tmp/app.log devhost --sha256
sshc download -r /var/log/my-app/app.log -l tmp/logs/ devhost --sha256下载整个日志目录:
sshc dl -r /var/log/app -l tmp/app-logs devhost