如果端口转发失败,如何使 ssh 失败

xor*_*yst 11 linux solaris ssh ssh-tunnel

我有一个运行 ssh 的 bash 脚本来创建一个转发端口,使用如下命令:

ssh -N -i keyfile -L 1000:localhost:22 *remote_ip*
Run Code Online (Sandbox Code Playgroud)

有时候监听端口可能很忙,所以这个命令给出了错误:

channel_setup_fwd_listener: cannot listen to port: 1000
Could not request local forwarding.
Run Code Online (Sandbox Code Playgroud)

但是,ssh 连接保持正常并且 ssh 命令阻塞。发生这种情况时,如何使 ssh 实际上失败,以便我的脚本可以处理它?

不幸的是,我还需要在 Solaris(英特尔)上支持它,并且那里的 ssh 命令不支持 ExitOnForwardFailure 选项 - 在这种情况下有什么想法吗?

eth*_*ish 19

如果您查看 ssh 手册页,您会发现有一个名为 ExitOnForwardFailure 的配置选项,您可以通过添加以下内容在命令行中指定它:

-o "ExitOnForwardFailure yes"

所有 ssh 配置选项都在 ssh_config 和 sshd_config 手册页中描述。如果您发现该选项不受支持,您可能需要升级到更新版本的 ssh。

祝你好运。