私は動的OpenSSHトンネルを次のように実行しています:
ssh -N -D '*:1080' [email protected]
(OpenSSH_5.3p1 Debian-3、OpenSSL 0.9.8n 2010年3月24日)
これは数時間または数日間完全に実行されますが、接続をランダムにドロップし始め(100%ではなく、一部のみ)、次のようになります。
channel 1019: open failed: administratively prohibited: open failed
私はそれをグーグルで検索しましたが、サーバーの設定ミスがトンネルを完全に拒否しているためにこのメッセージが表示されているだけです。ここでは、トンネルはいくつかのリクエストをドロップする数時間前に機能します。
何か案が?
到達不能な宛先にポート転送しようとすると、同じメッセージが表示されます。
ssh example.com -L 1337:example.invalid:80
telnet localhost 1337
[email protected]:〜$チャンネル3:オープンに失敗しました:管理上禁止:オープンに失敗しました
「管理上禁止」もICMP制御メッセージの1つです。 SSHサーバーとトンネルの宛先の間のルーターがこれを送信している可能性はありますか?
スニッフィングが可能な場合は、icmp
だけの単純なpcapフィルターですべてのICMPトラフィックを表示できます。
authorized_keys
とpermitopen
を使用しても同じ問題が発生しました。サーバー側では、/ var/log /auth.logに次のものが含まれています。
Received request to connect to Host 127.0.0.1 port 10001, but the request was denied.
autossh
を使用してトンネルを作成するため、接続用(10000)と監視用(10001)の2つのポートが必要でした。問題は監視ポートにありました。
私のauthorized_keysで私はこれを持っていました:
command="/home/user/tunnel",no-X11-forwarding,no-pty,permitopen="localhost:10000",permitopen="localhost:10001" ssh-rsa AAAA
localhost
インスタンスを127.0.0.1
に置き換えることでこれを解決しました
接続が切断される理由は、SSH接続ターゲットと転送ポートの最終ターゲットの間のどこかで、ファイアウォールが過負荷になっているか、アイドル状態の接続のクリーンアップが過度に厳密になるように構成されている可能性があります。
ファイアウォールが接続が十分長い間アイドル状態であると判断すると、ファイアウォールは接続状態テーブルから接続情報を削除する場合があります。その後、接続のいずれかのエンドポイントがトラフィックを通過させようとすると、既存の接続を使用しようとしているように見えますが、ファイアウォールには次の状態追跡情報がないため、ファイアウォールは(目的の宛先に代わって)接続を拒否します。その接続。そのため、ファイアウォールはICMPエラーメッセージを含むパケットを拒否するため、「管理上禁止」されます。
悪いリンクに遭遇する可能性はありますか?私はそのメッセージにかなり困惑しています-私が考えることができた他の唯一のことはメモリの問題でした-あなたはあなたが押し込まれた箱にたくさんの無料のRAMを持っていますか?