あなたがしたいことは、あなたの「Linux サーバー」から「my_other_server」などの外側の何か、または両方のサーバーが到達できる何かに ssh することです。
ssh リモート ポート フォワーディングを使用します。
[[email protected]_server]$ ssh -R8022:localhost:22 my_other_server.com
説明:my_other_server に接続し、そこでポート 8022 を開くと、ポート 22 で私に転送されます。
my_other_server.com から、ポート 8022 で localhost に SSH 接続し、トラフィックを linux_server にピギーバックして linux_server に転送することができます -> my_other_server トンネル[[email protected]_server]$ ssh -p8022 localhost
説明:linux_server に転送されるポート 8022 で自分自身に接続します
最初の linux_server -> my_other_server トンネルがドロップアウトする問題がある場合は、スクリプトを作成してトンネルを開いたままにするか、キープアライブ設定を調整するか、autossh を使用することができます。
この回答は受け入れられたものに基づいていますが、詳細を追加して、それを完了することができました。これは私の専門知識のすべてではないので、歩行者の説明で申し訳ありません.
A
という 2 台のコンピューターがあるとします。 そして B
. ssh
したい A
から B
まで 、それらに接続されたルーターでポート転送を行うことはできません。
受け入れられた回答が述べているように、サーバー S
が必要です これを行うには:コンピューター B
で 、あなたは ssh
を許可します S
からの接続;およびコンピュータ A
から 、S
でそのトンネルにアクセスします B
に到達する .
しかし、どうやってそのサーバー S
を取得するのですか? ? serveo
を見つけました (リンク:https://serveo.net/)。使い方はとても簡単です。何もインストールしたり登録したりする必要はなく、無料です。 Web サイトによると、従うべき手順は次のとおりです。
コンピュータ B
のエイリアスを考えてみましょう .例:computer_B_alias
.
コンピュータ内 B
、 ssh -R computer_B_alias:22:localhost:22 serveo.net
を実行 .
これで、コンピュータ B
にアクセスできます コンピュータ A
から コンピューター A
で以下を実行することにより :ssh -J serveo.net [email protected]_B_alias
、ここで user
を置き換える必要があります コンピュータ B
のユーザーの名前で .
P.S.:もちろん、コンピューターの起動時にポイント 2 を自動タスクにします B
.
P.S.S.:これを試す前に、ssh
であることを確認してください。 両方のコンピュータにインストールされています。 Ubuntu の場合、sudo apt-get install ssh
ある種のVPNを使用してこれを機能させることができますが、アクセスできないサーバーがアクセスできるサーバーが必要になります.次に、サーバー、PC、およびファイアウォール サーバーで OpenVPN をセットアップし、client-to-client
を有効にします。 、これで完了です。 http://openvpn.net/howto.html