SSH ProxyCommand 报 command not found 失败
定位缺失的 ProxyCommand 辅助程序,并区分本地执行失败与代理协商或 SSH 登录失败。
connect: command not found 表示 SSH 无法在本地启动它的 ProxyCommand 辅助程序。此时还没有可供修复的代理握手。这个名称可能指向一个独立的可执行文件,而不是 shell 内建命令或 OpenSSH 子命令。
- 找到实际选中的命令。 检查同一目标别名和账户对应的有效 SSH 配置。Host 段、被包含的文件以及命令行选项都可能选中与你编辑的文件不同的 ProxyCommand。
- 定位它的可执行文件。 把启动环境的 PATH 与该辅助程序能正常工作的交互式终端做比较。给出指向目标程序的绝对路径即可消除这种歧义。
- 让辅助程序实现匹配。 不要随便用任何名为
nc的二进制替代。OpenBSD netcat 对 HTTP CONNECT 使用-X connect,对 SOCKS5 使用-X 5;其他变体可能没有这些选项,也不支持代理认证。
辅助程序启动后,按顺序跟踪下一个失败点:连接代理、代理协商、连接目标,最后是 SSH 认证。某一阶段的失败并不能证明后续阶段也有问题。
ProxyJump 需要一台 SSH 跳板主机。只有在存在该服务时,它才能替代这套安排;HTTP 代理不会因为配置改了就成为 SSH 登录端点。