利用可能な SSH サーバー/クライアントは次のとおりです。
A - パブリックIPなし
B - パブリック IP
C - パブリック IP なし
わかっています。次のようにして A から C への SSH 接続を確立できます。
1) CをBにフックします。Cから実行します。
ssh -R 10100:localhost:22 B_IP
2) マシン A で ssh-agent を使用できるようにするために、B フックを使用して A から C へのポート転送を設定します。
ssh -L 5000:localhost:10100 B_IP
3) これで、SSH キーを使用して A から C に「直接」アクセスできるようになりました。
ssh -p 5000 localhost
...私の主張はこうです:
AからCへの新しい「純粋な」接続を何らかの方法で確立できますか?マシン B がダウンした後も作業を継続できますか?
これら 2 台のコンピューターが認識している限り、すでに接続を共有しているはずだと思いますが、間違っていますか?
貴重なお時間とアイデアをありがとうございました :)
答え1
のいつもの方法は、A または C のルーターで「NAT ポート転送」を設定することです。(設定方法はルーターによって異なりますが、どこにでも手順が記載されています。) これを実行すると、C ルーターのパブリック アドレス + 「転送」ポートに接続できるようになり、接続は C に渡されます。
(注:NATポート転送とSSHポート転送は似ていますしかし、明確に(ハンマーとドライバーのような物です。混同しないでください。)
どちらのルーターにも管理者権限がない場合は、多くのゲームや P2P プログラムと同様に、UPnP または NAT-PMP を使用してポート転送ルールを設定することができます。そのためには、
upnpc
またはnatpmpc
コマンドを使用します。上記の方法がどちらもうまくいかない場合は、何らかの形でNAT ホールパンチング(以下も参照)TCPそして情報処理穴あけ加工の記事。
残念ながら、さまざまな分野で広く使用されていますが、特定のプログラムは多くないようですジェネリックTCP用のツールですがチョーナット動作するかもしれません。
答え2
ルーターで何らかのポート転送ができないと、これはおそらく不可能ですが、この場合はコンピューター C はまったく必要ありません。
問題は、あなたの例では A から C へ直接移動しているのではなく、パケットはすべてまだ B を通過しているということです。
パブリック アドレスを持つ別のコンピューターがある場合は、スター トポグラフィーで VPN セットアップを設定し、VPN 間のルーティングを使用して、パブリック ホストのいずれかがダウンしても動作を継続できる仮想ネットワークを作成できます。私は OpenVPN を使用してこれを実行しましたが、いくつかの注意点があり、重要な点の 1 つはリバース パス フィルタリングを無効にすることです。
答え3
これを行う 1 つの方法は、ピアツーピア VPN を使用することです。これは、ホストの 1 つに静的 IP アドレスまたは静的ドメイン名を設定する必要がない VPN です。以下で説明するその他のアイデアは、実際には VPN ではありませんが、何らかのプロトコルを介してピアツーピア接続を確立するソフトウェアです。次にいくつかのオプションを示します。
に基づくトックスチャット通信網:
私は個人的に両方の解決策を試しましたが、職場の(大企業スタイルの)ネットワークによってブロックされました。
- トックスVPN- 現時点ではあまりよくメンテナンスされていないようですが、動作するはずです。
- タントックス- 同様のアイデアですが、実際の VPN ではありませんが、tox ネットワーク上の 2 台のマシン間で接続を確立し、ssh ポートを転送できます。ssh の例は README で参照できます。
公開されている有料のチャットサービスに基づく
個人的にはどれも試したことがなく、効果があるとは思えませんが、試してみる価値はあるかもしれません。
- LAN パーティー VPN- Discord に基づいています。現時点ではあまりよくメンテナンスされていないようです。また、README には多くの例が含まれていませんが、確認する価値はあるかもしれません。
- ロボティト- あまりよくメンテナンスされていないようです。また、インストールも難しいようです - 使用グーグルボイス(旧 GTalk)。
パブリックサーバー(他者が管理)に基づくVPN
個人的な経験: 試してみましたn2n
が、職場の (大企業スタイルの) ネットワークによってブロックされました。
- 2n ...- 「スーパーノード「によって維持されているトップ
n2n
チーム -の READMEに従って動作していますsupernode.ntop.org:7777
(スーパーノードもフリー ソフトウェアですが、実行するにはやはり、公開アクセス可能なサーバーが必要です)。 - ヌベラ- と同様の概念です
n2n
が、スーパーノードそれは灯台誰でも利用できる公開ライトハウスは提供していませんが、実際には、dnclient
公開されているVPSで実行する必要があります。彼らのドキュメントしたがって、これはあなたの要件を満たすものではありませんが、それでも言及する価値があると思いました。
有料サブスクリプションが必要なその他の VPN ソリューション。
市販されているほとんどの VPN サービスとは異なり、パワー ユーザーをターゲットにした VPN サービスのうち、2 人のユーザーが VPN のサブネットを介して相互に通信できるようにするのはごくわずかです。この機能を提供できるプロバイダーは他にもある可能性があります。その 1 つを以下に示します。
- Hamachi、LogmeIn (vpn.net) より- クライアントはオープンソースではないが、彼らの文書によると確かに、ネットワークや IP アドレスなどを管理できるようになります。
コミュニティが維持するネットワークに基づく
たとえ強力な NAT の背後であっても、ファイアウォールの制限が厳しすぎなければ (私の場合はそうではありません)、次のいずれか (VPN 以外) を実行できる可能性があります。
- トル- 試すこのガイド
.onion
基本的には、世界中の Tor ユーザーがアクセスできるドメイン (Tor サービス)を作成します。 - 翻訳- 試すこのガイド私が推奨するクライアント
i2dp
向けの手順も記載されています。i2p
最後の手段
最も厄介なファイアウォール、NAT、その他のネットワーク制限があっても、素晴らしいhttps://tmate.io/無料(ビールが無料、言論の自由という意味)のソフトウェアとサービス。ただし、欠点もいくつかあります。
- 対話型コマンドはありません(問題 #179)。
- サポートなし
scp
。 tmux
フォークのベースとなるバージョンは今日の時点では です2.6.0
が、現在のtmuxの最新バージョンは です3.3a
。つまり、~/.tmux.conf
を として動作させるには~/.tmate.conf
、重要な調整が必要になります(例えば私の個人的なドットファイルから)。
tmate の管理者はこれについて明確に言及していませんが、最初に述べた 2 つの欠点は意図的な制限であると私は考えています。これらの機能を悪用して のtmate.io
サーバーを介して大量のデータを転送できるからです。したがって、これはtmate
シェルの「リモート デスクトップ」のようなものになります。2 つのマシン間でファイルを転送するには、他の方法を見つける必要があります (次のことを考慮してください)。同期)。
全体的に、tmateの使いやすさと素晴らしいパフォーマンスは、私にとっては最高のソリューションです。同期ファイルを転送する場合、これが最良かつ最も信頼できるソリューションだと思います。