web-dev-qa-db-ja.com

接続障害時にautossh転送ポートが開いたままになる

ホームネットワークからリバースSSHトンネルを確立しようとしています。 autosshがリブートごとに1回だけ(そして1回だけ)正常に接続するようにしました。家から離れているときに接続できるように、リモートポートをローカルマシンに転送しています。私は衛星インターネットに接続しており、ダブルNATファイアウォールの背後にいるため、ホームネットワークに直接接続するのは簡単ではありません。

Ssh接続が最初にドロップアウトしたときに、リモートマシンのポートが開いた状態のままになっているようです。ポートがすでに使用されているため、その後の再接続の試行は失敗します。サーバーを再起動するまで物事を再開できませんが、これは理想的とは言えません。

Googleやフォーラムの検索で運がなかったので、ここの誰かが私を正しい方向に向けてくれることを願っています。

ここのガイダンスに従って、サーバーとローカルマシンを構成しました。

http://linuxaria.com/howto/permanent-ssh-tunnels-with-autossh

私の接続スクリプトは以下の抜粋であり、/ etc/rc.localに含まれています。

su -s /bin/sh autossh -c 'autossh -M 20000 -f -i /home/autossh/.ssh/id_rsa -N -R 99999:localhost:22 [email protected]'

応援よろしくお願いします!

コーリー

2
corey_s

さて...部分的な解決策、それが完全に解決したかどうかはまだわかりません。私は次の変更を加えましたが、少なくとも一晩は接続されています。ただし、セッションが終了すると、再接続に成功するかどうかはわかりません。

  1. リモートサーバーsshd_configに次の行を追加しました。

    ClientAliveInterval 600
    ClientAliveCountMax 12
    
  2. 次のようにautosshを起動するようにrc.localスクリプトを変更しました(ServerAliveIntervalおよびServerAliveCountMaxオプションを追加):

    su -s /bin/sh autossh -c 'autossh -M 20000 -f -i /home/autossh/.ssh/id_rsa -o "ServerAliveInterval 120" -o "ServerAliveCountMax 5" -N -R 99999:localhost:22 [email protected]'
    

また、GatewayPortを使用した接続の信頼性が低いこともわかりました。の代わりに:

user@machine1 $ ssh -p 99999 remotehost.com

リモートホストに直接ログインし、localhost、alaのポート99999に接続します。

user@machine1 $ ssh remotehost.com
user@remotehost $ ssh -p 99999 localhost

これはより信頼できるようです。ゲートウェイポートがハングする傾向があります。しかし、上記のように2つのステップで接続すると、まだスルーします。セッションがドロップした後に再接続するかどうかを確認する機会があれば、更新をポストバックします。

これが他の人の助けになることを願っています!

コーリー

1
corey_s