ポート転送なしのルーターを介したSSH


11

Linuxサーバーがあり、ルーターの背後にあるホームネットワークに配置したいと考えています。外部からこのサーバーにSSH接続する必要がありますが、ルーターにアクセスできないため、ポート転送を設定したくありません。ルーターのIPもわかりません。

私ができることは、Linuxサーバーにプログラムを配置することです。そのため、インターネットに接続しているときは、他のサーバーに常にデータをオンラインで送信するため、IPアドレスがわかります。しかし、外部からルーターの背後にあるサーバーにsshする方法はありますか?ネットワーク接続を維持するNATやソケットのようなもの?

どうもありがとう

回答:


24

あなたがしたいことは、「Linuxサーバー」から「my_other_server」などの外部の何かまたは両方のサーバーがアクセスできる何かにsshすることです。

sshリモートポートフォワーディングを使用します。
[user@linux_server]$ ssh -R8022:localhost:22 my_other_server.com
説明:my_other_serverに接続し、ポート8022を開いて、ポート22で転送します。

my_other_server.comからsshでポート8022のlocalhostに転送し、トラフィックをlinux_serverに転送してlinux_serverに転送することができます-> my_other_serverトンネル [user@linux_server]$ ssh -p8022 localhost
説明:linux_serverに転送されるポート8022の自分に接続します

最初のlinux_server-> my_other_serverトンネルのドロップアウトに問題がある場合は、スクリプトを作成して開いたままにするか、キープアライブ設定を調整するか、autosshを使用します。


1
ありがとうございます。スクリプトを使用して開いたままにします。もう1つの質問は、このような「Linuxサーバー」が1000個あり、「my_other_server」が1つしかない場合、この方法でそれらのいずれかにSSH接続できるかどうかです。私はそれらすべてが異なるポートを必要とすると思いますが、そうするためのより良い方法はありますか?
Jiechao Li 2013

まあそれは依存します。linux_serverを使用しているので、そこからlinux_server2とlinux_server3にSSHで接続できますか?それが一番簡単でしょう。つまり、8022を使用する代わりに、これを数回繰り返すことができます。8023、8024を使用します。そのルートを使用する場合は、すべてのポート番号を含む〜/ .ssh / configファイルを「my_other_server」に作成します。 ssh [port] localhostの代わりにssh [alias]を実行するだけです。それは面倒になります。
MattPark 2013年

1
2台のマシンでこれをセットアップすることは可能ですか?BをAに接続し、AをBに接続しますか?
adamyonk 2016

1
やった。動作することを確認できます。\ o /
adamyonk 2016

うん男---明らかにあなたはそれを理解した。あなたはautosshそれを開いたままにするようなものを使うことができます 。
MattPark 2016

3

ある種のVPNを使用してこれを機能させることができますが、アクセスできないサーバーがアクセスできるサーバーが必要になります。次に、サーバー、PC、ファイアウォールサーバーでOpenVPNをセットアップし、を有効client-to-clientにすると完了です。http://openvpn.net/howto.html


ありがとう。私はこれを調べていますが、少し複雑なようです。正しく理解できたら、両方のサーバーにOpenVPNをインストールして、ルーターを構成せずに通信できるようにする必要がありますよね?
Jiechao Li 2013

丁度。サーバーを「サーバー」として構成してから、接続する2つのクライアントを「クライアント」として構成で構成します。ただし、上記のリバースSSHの方が簡単なようです。
ネイサンC

2

この回答は承認されたものに基づいていますが、私がそれを成し遂げることを可能にした詳細を追加しています。これは私の専門知識ではないので、歩行者の説明をお詫び申し上げます。

2台のコンピュータがあるAとしBます。sshからにAしたいが、Bそれらに接続されているルーターでポート転送を実行できない。

受け入れられた回答が述べるように、Sこれを行うにはサーバーが必要です。コンピューターではBsshからの接続を許可しSます。コンピュータからA、そのトンネルにアクセスしSて到達しBます。

しかし、どのようにしてそのサーバーを取得しますSか?見つけましたserveo(リンク:https : //serveo.net/)。それは非常に簡単に使用できます。何もインストールしたり登録したりする必要はなく、無料です。ウェブサイトによると、従うべき手順は次のとおりです。

  1. コンピュータのエイリアスを考えてくださいB。たとえば、computer_B_alias

  2. コンピュータBで実行しssh -R computer_B_alias:22:localhost:22 serveo.netます。

  3. さて、あなたは、コンピュータにアクセスできるBコンピュータからAコンピュータに次のコマンドを実行してAssh -J serveo.net user@computer_B_aliasあなたは代用する必要がどこuserコンピュータでユーザーの名前でB

PS:もちろん、コンピューターを起動するときに、ポイント2を自動タスクにしますB

PSS:これを試す前にssh、が両方のコンピューターにインストールされていることを確認してください。Ubuntuの場合sudo apt-get install ssh、仕事をします。


1

答えるのに長い時間がかかります。

NATの背後にあるサーバーにアクセスする必要があり、コードを記述したくない場合は、以下のツールを使用して、ニーズに合ったものを使用できます。

上記のツールはどちらも、Linuxマシンにアクセスしてクライアントをインストールできることを前提としています。これらの利点の一部は次のとおりです。

  • どちらもWebインターフェイスを使用してターミナルにアクセスできます
  • 独自の中間的な逆sshホストは必要ありません。
  • インストールが非常に簡単
  • どちらもオープンソースです

個人的にはtmateサーバーを自分の中間サーバー(reverse sshの場合)でホストできるので、テレコンソールは自分のサーバーに接続して逆sshの場合にのみ接続できるため、tmateの方が好みです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.