SSH の各ホストに 2 つの異なる IP アドレスを使用します。

SSH の各ホストに 2 つの異なる IP アドレスを使用します。

gamma私は職場で継続的に実行されているサーバーを持っています。時には自宅で接続しますが、この場合はパブリックIPアドレスを使用します55.22.33.99。時には職場でパケットが不必要にバウンスされるのではなく、ローカルIPアドレスを介して接続されます192.168.1.100

現在、私はそれらを2つの異なる項目に分けています。~/.ssh/conf

Host gamma-local
        HostName 192.168.1.100
        Port 22
        User andreas

Host gamma-remote
        HostName 55.22.33.99
        Port 12345
        User andreas

したがって、職場にいる場合はを入力しssh gamma-local、家にいる場合は(または世界のどこでも)を実行しますssh gamma-remote

サーバーに接続するときは、場所に応じて別の名前を入力する必要はなく、その部分を自動的に実行したいと思います。たとえば、場合によっては、そうでない人をリンクする自動化されたスクリプトがあります。私がどこにいるか知っています。

持つこの問題を解決するには、Bash スクリプトを使用します。まず、ローカルで接続を「試行」して接続できない場合は、リモートIPアドレスに接続してみてください。これは問題ありませんが、(1)非効率的なようです(特に常にエラーをすぐに再送信するわけではないため、接続がタイムアウトするまで「待機」する必要があるため)。 (2) Bashとスクリプトのドラッグが必要です。

Bashスクリプトを使用しない場合、または接続が最初に機能するかどうかを「テスト」せずにこれを達成する別の方法はありますか?

ベストアンサー1

現在接続されているネットワークを識別する方法がある場合は、Matchキーワードを使用できます。~/.ssh/configあなたが欲しいものをしてください。これにはOpenSSH ≥6.5が必要です。

私は次のようなものを使用します

Match originalhost gamma exec "[ x$(/sbin/iwgetid --scheme) != xMyHomeESSID ]"
  HostName 192.168.1.100
  Port 22

Host gamma
  User andreas
  Port 12345
  HostName 55.22.33.99

だから私はSSH接続のために自宅にいることを確認するために使用しているWi-Fiネットワークの識別子を使います。ただし、コンピュータに割り当てられているIPアドレスまたは2つのネットワークを区別できる他のものを確認することもできます。

おすすめ記事