デフォルトでは、SSHサーバー(マシンA)とSSHクライアント(マシンB)がインターネットにアクセスできる限り、ネットワーク構成に関係なくTeamViewerなどのタスクを実行できるようにしたいと思います。コンピュータC)、アクセス権を得ることができます。その理由は、コンピュータAを移動して接続し、事前に設定された複数のWi-Fiネットワーク(各ネットワークは一意または互いに異なる)の1つに自動的に接続できるようにしたいからです。ネットワークでポート転送または同様の機能を設定し、コンピュータBからインターネット経由でログインできます。
どうすればいいですか?ハンドシェイクを支援するために静的IPアドレスを使用してサーバーに何かを設定することは問題ありませんが、何かがすでに存在する場合(teamviewerのように)、サードパーティサーバーを使用してもかまいません。
明確にするために編集:ABとCという3つのコンピュータがあります。
Aは、任意の場所で電源をオン/オフし、事前設定されたWiFiネットワークに接続するヘッドレスラズベリーパイです.
Bは、接続したい適切なモニター、キーボードなどがあるシステムです。
Cは、静的IPアドレスを持ち、BでSSHを安定して使用でき、BがAに接続するために必要なすべてをインストールできるリースAWSサーバーです。
答え1
インターネットにマシンCがあるので、そこに呼び出された特別なアカウントを作成し、公開/秘密鍵を使用してAにアカウントを生成すると、公開鍵をCのアカウントsesame
にコピーしました。sesame
これでAからCにログインできますが、次のことができます。
ssh -N -R 19930:localhost:22 sesame@yourserverC
(たとえば、10秒間スリープステートメントと組み合わせてWiFiがシャットダウンして接続が切断された場合は、接続をリセットするために無限ループでラップできます。)
マシンBは通常Cにあるアカウントにログインします(それはそのアカウントかもしれませんが、必ずしもそうではありません。sesame
私は別のアカウントを使用します)。 Cを入力したら、次のコマンドを使用してAにログインします。
ssh localhost -p 19930
もちろん、19930以外の数字を使用することもできます。
Aの秘密鍵がパスワードで保護されていない場合は、ssh -N -R ...
次から実行できます。この場合、コンピュータAが侵害/盗難に遭った場合は、サーバーCのリスクが制限されるように機能が制限された別のアカウントを作成して/etc/rc.local
ください。sesame
そのため、B から C に移動するには別のアカウントを使用することをお勧めします。
sesame
実際にはinのログインシェルを/etc/passwd
toに設定できるため、/bin/false
このアカウントを使用してログインすることはできません。
答え2
IPv6トンネルをインストールします(例:シックス)をラズベリーパイにインストールしてください。これで、Piがオンラインになっている間にオンラインのままである永続的な固定IPv6アドレスがあります。 Piは世界とつながっているので、Piを保護してください。
BがIPv6ネットワークに接続されている場合、Piに直接接続されます。 BがIPv6ネットワークに接続されていない場合は、Cをジャンプサーバーとして使用し、IPv4を介してCに接続し、IPv6を介してCからPiにSSHを介して接続します。
答え3
また、これを見てください:
使用されるテクノロジは、許可された回答で説明されているものと同じですが、一部のスクリプトを使用してタスクを自動化し、ソリューションをより一般的にします。また、問題が発生してもメインシステムが安全になるようにDockerコンテナ内の全体構成を構成します。
ただし、AからCへの自動接続は提供されていないため、手動で開始する必要があります。要件を正確に満たすようにソリューションを少しカスタマイズすることもできます。
答え4
リバースSSHポート転送を調べる必要があると思います。つまり、まず、次の構文を使用して A から C に ssh を起動し、そのポートを使用して C から A にトンネリングします。これにより、R-Piにすでにトンネルがあるため、Aのホームファイアウォールに触れません。
ssh -R 2210:localhost:22 myCoolAwsSite.com
これを行うときの安全への影響を考慮してください。再起動後に接続をリセットするためにcron jujitsuを追加できます。