リモートホストのポートにバインディングが既に存在しているときに -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