ポート転送に失敗したときにSSHを失敗させることはできますか?

exit-code port-forwarding ssh

リモートホストのポートにバインディングが既に存在しているときに -R 3690:localhost:3690 のようにリモートポートフォワードを行うと、このような警告が表示されます

Warning: remote port forwarding failed for listen port 3690

警告を出すだけではなく、ssh を失敗させる (つまり、0 以外のリターンコードで終了させる) 方法はありますか?

  45  Matt Joiner  2011-10-31


ベストアンサー

Run

ssh -o ExitOnForwardFailure=yes ...

or put

ExitOnForwardFailure yes

~/.ssh/config に変換します。詳細は man ssh_config を参照してください

71  Andrew Schulman  2011-10-31


ターゲットホストで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で実行することもできるかもしれません

1  Antti Rytsölä  2011-11-04


タイトルとURLをコピーしました