bcmr v0.7.1
docs / 指南 / SSH 连接选项与 URI 路径

SSH 连接选项与 URI 路径

临时 SSH 连接选项可以放在子命令前后:

bcmr --ssh-port 2222 copy report.pdf alice@storage:/srv/backups/
bcmr copy --ssh-identity ~/.ssh/work_ed25519 --ssh-jump bastion report.pdf storage:backup/
bcmr --ssh-config ./ssh.conf doctor storage
选项本次调用中的作用
--ssh-port PORT目标端口,范围为 1–65535。
--ssh-identity PATH提供指定身份文件,可重复传入多份。
--ssh-config PATH读取指定 OpenSSH 配置文件。
--ssh-jump HOST使用 OpenSSH ProxyJump,支持跳板链和 user@host:port。

这些选项覆盖源路径展开、传输、校验、远程文件检查、移动清理、doctor 和 deploy,也用于 serve/direct 建连及 SFTP 后端。它们不会修改持久配置; SSH 别名与其余认证行为沿用 OpenSSH 配置。

--ssh-identity 追加身份参数,不会自动设置 IdentitiesOnly,因此仍可能 提供配置中的其他密钥或 agent 身份。需要限制认证身份时,在 SSH 配置中设置 IdentitiesOnly yes 和所需的 IdentityFile;需要禁用 agent 时再设置 IdentityAgent none。

-P 仍表示传输并发数;--config 选择 bcmr 配置,--ssh-config 选择 OpenSSH 配置。例如:

bcmr --config ./bcmr.toml --ssh-config ./ssh.conf copy -P 4 report.pdf storage:backup/

URI 端点与端口优先级

URI 格式为 scp://[user@]host[:port]/absolute/path,路径始终为绝对路径。 需要相对于远程登录目录的路径时,使用 storage:backup/。 原有 storage:/srv/backups/ 和 storage://srv/backups/ 写法继续可用。

# 此端点使用 2200,覆盖本次调用设置的 2222。
bcmr --ssh-port 2222 copy report.pdf 'scp://alice@storage:2200/srv/backups/'

# IPv6 地址使用方括号;在 shell 中为 URI 加引号。
bcmr copy 'scp://alice@[2001:db8::1]:2222/srv/data/report%20Q4.csv' ./downloads/

# 按 UTF-8 解码百分号转义:空格、字面百分号和 Unicode 文件名。
bcmr copy 'scp://storage/srv/data/%E9%9B%AA%20%23100%25.txt' ./downloads/

URI 内的显式端口只对该端点优先于 --ssh-port。没有显式端口的端点先使用 --ssh-port,再使用 OpenSSH 的常规端口配置。同一主机上的不同端口在连接池 和连接复用中保持独立。

空格编码为 %20,% 为 %25,# 为 %23,? 为 %3F。 百分号转义必须能解码为合法 UTF-8。NUL、格式错误的主机部分、无效端口, 以及未转义的查询或片段分隔符,会在远程源路径展开前被拒绝。 URI 写法不改变传输后端或远程路径安全规则;解码后的源路径仍按 * 规则展开。

后台任务与补全

后台工作进程会重放原命令中的连接选项:

bcmr --ssh-port 2222 copy --background --json report.pdf storage:backup/

生成的 Bash、Zsh、Fish 和 PowerShell 远程补全会把已输入的连接选项转交给 远程补全请求,包括重复的身份文件选项。升级后请重新执行 bcmr init 初始化,或重新生成已安装的补全脚本。详见 Shell 集成。