当端口转发失败时,我可以让 SSH 失败吗?

当端口转发失败时,我可以让 SSH 失败吗?

如果我执行远程端口转发,-R 3690:localhost:3690当远程主机上的端口上已经存在绑定时,我会收到此警告:

Warning: remote port forwarding failed for listen port 3690

有没有办法让 ssh 失败(即以非零返回码退出),而不是仅仅发出警告?

答案1

跑步

ssh -o ExitOnForwardFailure=yes ...

或者放

ExitOnForwardFailure yes

进入~/.ssh/configman ssh_config详情请参阅。

答案2

我在目标主机上使用 bash 脚本来确保转发已正确打开。如果端口转发出现问题,SSH 连接将运行此脚本并退出,例如

客户端脚本:(使用 .ssh/config 进行端口转发设置)

#!/bin/bash    

while true; do
    echo -n starting at : "
    date
    ssh user@server bin/sshloop.sh
    echo "got back, sleeping 17 "
    sleep 17
done 

服务器端脚本(bin/sshloop.sh)

#!/bin/bash

while true; do 
  echo $(date)" : SSH Reverse 1090:80, 1232:22 From Server to Client"
  sleep 17
  if ! netstat -an | grep -q ":::1090 " ; then
     echo "1090 forward missing, bailing out"
     exit
  fi
done

甚至可以使用 -dmS 在屏幕下运行客户端脚本

相关内容