インバウンドトラフィックがイネーブルでなく、静的IPアドレスを持たないネットワーク上のデバイスのSSH

インバウンドトラフィックがイネーブルでなく、静的IPアドレスを持たないネットワーク上のデバイスのSSH

私がやりたいことは活性化することです。山いちご、顧客サイトに物理的に配置され、持つ以下によるインターネットアクセス動的IP、野生でSSHコマンドを受信クライアントルーターとファイアウォールを操作する必要はありません。。このネットワークではインバウンド接続は許可されず、顧客サイトのインターネットアドレスは動的です。

編集する: この問題に対する解決策を知りたい場合は、次の回答をご覧ください。ケビン・キンジェイそしてフロリンゴダル、または質問の最後までスクロールして、非標準のSSHポート22で動作するようにする方法を学びます。

私は提案された内容を調べて理解しようとしました。Unix Stack ExchangeからSSH経由でprivate-ipへしかし、私はそのポイントを本当に理解していません。

話から始めたいです。ラップトップ、顧客へVPSサーバー、VPSサーバーが次に接続できるようにします。山いちごSSH。だから:

           ( firewall access allow in+out )
      | =>           VPS Server              \    ( firewall access allow out only )
      |                                      | =>    Raspberry
MY PC /

これはケースシナリオ指定されたIPアドレス、ポート、および名前で構成します。

MY PC 
    name: [email protected]

Client VPS Server
    name: remote.null.tld
    IP Address: 98.76.54.32
    SSH Port: 9876

Raspberry
    model: Zero W
    name: [email protected]
    IP Address: dynamic IP ( based on Internet Provider )
    SSH Port: 6789
    Raspberry's iptables: empty
    Router's Firewall Restrictions: allow only out
    Internet stability: very low

Raspberryの外部IPはインターネットプロバイダによって割り当てられ、ルータの再起動によって変更される可能性があります。完全に確信できる方法はありません。

クライアントネットワークのインターネットアクセスは本当に不安定です。ラジオリンクとかそうです。それにもかかわらず、インターネット接続の帯域幅は非常に不規則です。

さらに、顧客のルーターは怠惰なためではなく、顧客のIT部門が課す制限のために操作することはできません。

クライアントのVPSへのSSHアクセス権があり、ここに任意のソフトウェアをインストールできます。

編集する:トラブルシューティング

私の設定では、ポートは非​​標準です。したがって、解決策は次のとおりです。

ラズベリーの場合:

# login to [email protected] is done via private/public key with no passwords
ssh -p 9876 -f -N -T -R 55555:localhost:6789 [email protected]

ラズベリークローンタブから:

# A re-connect is performed at every 10th minute of every hour to prevent accidental tunnel breakdowns.
10 * * * * ps -ef | grep 'ssh -p 9876 -f -N -T -R' | grep -v grep | awk '{print $2}' | xargs -r kill -9 && sleep 30s && ssh -p 9876 -f -N -T -R 55555:localhost:6789 [email protected] >/dev/null 2>&1

ブリッジVPSRemotenull.tld

ssh -p 55555 raspberry_username@localhost

または、VPSのSSH設定を変更して、よりエレガントなソリューションを提供してください。

Host tunnelToRemoteRaspberry
    Hostname localhost
    User raspberry_username
    Port 55555

ベストアンサー1

私はremoteVPSとRaspberry Pipiのユーザー名を想定しています。

  1. VPSで無料ポートを選択します。 65000未満の任意の5桁の値が機能します。
  2. Raspberry Piでは、以下を実行します。

    ssh -R PORT:localhost:22 remote@vps
    
  3. VPS では、次のコマンドを使用して Raspberry に接続できます。

    ssh -p PORT pi@localhost
    

PORTを手順1で選択したポートに置き換えます。

ステップ2では、VPSのPORTでRaspberryのSSHサーバーがリッスンするRaspberryのポート22まで、リバーストンネルを作成します。ステップ3では、VPSのポートに接続し、Raspberryのポート22に転送します。

その後、VPSの~/.ssh/configで接続を設定できます。たとえば、次のようになります。

Host raspberryTunnel
  Hostname localhost
  User pi
  Port PORT

安定して動作する場合は、Raspberryの単一のSSH接続をautosshに置き換えることができます。これにより、接続が中断されると自動的に接続が再作成されます。

autossh -R PORT:localhost:22 remote@vps

おすすめ記事