如果我执行远程端口转发,-R 3690:localhost:3690
当远程主机上的端口上已经存在绑定时,我会收到此警告:
Warning: remote port forwarding failed for listen port 3690
有没有办法让 ssh 失败(即以非零返回码退出),而不是仅仅发出警告?
答案1
跑步
ssh -o ExitOnForwardFailure=yes ...
或者放
ExitOnForwardFailure yes
进入~/.ssh/config
。man 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 在屏幕下运行客户端脚本