web-dev-qa-db-ja.com

PuTTY / sshでリモート接続(sshトンネル)を行う方法は?

PuTTYを使用してサーバーとラップトップの間にトンネルを作成しようとしています。問題は、ラップトップにはパブリックIPアドレスがないため、逆接続を行う必要があることです。しかし、私は本当にそれを行う方法を知りません。

私が欲しいものを示しましょう:

サーバー(ポート:6000)---------->ラップトップ(ポート:7000)

しかし、ラップトップにはパブリックIPアドレスがないので、次のようにする必要があります。

サーバー(ポート:6000)<----------ラップトップ(ポート:7000)

送信元ポート、宛先などとして何を書くべきか教えてください。

7
Ozer

必要な設定によって異なります。

セットアップ1)サーバーがリッスンしています

                              ssh tunel             LAN destination   
SERVER (listen on port 6000) ==========> LAPTOP -----> ip:port

(LANの宛先は、ラップトップ自体を接続するためのlocalhost:portにすることもできます)

PuTTY SETUP:PuTTYウィンドウのタイトルを右クリックし、[設定の変更]/[トンネル]を選択して、次のように入力します。

source port: 6000
destination: ip:port (or hostname:port)
select "Remote"

SSH: ssh -R 6000:hostname:port

セットアップ2)ラップトップがリッスンしています

                              ssh tunel              destination   
LAPTOP (listen on port 7000) ==========> SERVER -----> ip:port

この場合も、サーバー自体に接続するための宛先はlocalhost:portにすることができます。

PuTTYセットアップ

source port: 7000
destination: ip:port (or hostname:port)
select "Local"

SSH: ssh -L 7000:hostname:port

どちらの場合も、リスニングラップトップ/サーバーが他のホストからの接続も受け入れるかどうかを(PuTTYのチェックボックスで)指定することもできます。

8
Tomas

矢印の方向は、どのマシンがパブリックにルーティング可能なIPアドレスを持っているかとは関係ありません。解決しようとしている問題に基づいて、矢印をどの方向に向けるかを知る必要があります。接続は常にラップトップから開始されますが(他のマシンから直接アドレス指定できないため)、ポート転送をどのように機能させるかに基づいて、いずれかの接続転送引数を使用します。

PuTTYがわからないので、対応するコマンドを OpenSSH ;から指定します。うまくいけば、PuTTYのGUI設定ボックスで対応するオプションを簡単に見つけることができます。

laptop:7000への接続をserver:6000に転送する場合は、ssh -L 7000:server:6000を使用できます。接続がラップトップで発生している場合は、これをssh -L localhost:7000:server:6000に少し修正できます。これにより、ラップトップのポートがラップトップ自体で開始された接続に制限されます。

このコマンドでは、サーバー上のプログラムが接続のためにポート6000をリッスンしている必要があります。ラップトップ(またはローカルネットワーク上の他の場所)のプログラムは、接続を開始するためにlocalhost:7000(またはマシンのルーティング不可能なアドレスであるポート7000)に接続できる必要があります。

server:6000への接続をlaptop:7000に転送する場合は、ssh -R 6000:localhost:7000を使用できます。デフォルトでは、これはサーバーマシンで開始された接続に対してのみ開かれます。サーバーに接続できるすべてのマシンに公開したい場合は、ssh -R *:6000:localhost:7000を使用できます。

このコマンドを使用する場合、ラップトップ上のプログラムは、接続のためにポート7000をリッスンしている必要があります。サーバー(またはサーバーのネットワーク上の他の場所)のプログラムは、接続を開始するためにserver:6000(またはサーバーのルーティング可能なアドレス、ポート6000)に接続できる必要があります。

-L-Rの接続転送の違いを理解するのに何年もかかりました。 -Lは、プログラムが接続を試みることを示しています Locally、および-Rは、プログラムが接続を試みることを示します R感情的に。 (違いについて心配する必要はありません。必要になるたびにマニュアルで調べる必要があります。)

0
sarnold