web-dev-qa-db-ja.com

SSHトンネルまたはリバーストンネル

VNC/ARD接続(ポート5900および3389)を許可するためにSSHトンネルを確立しようとしています。しかし、私は特定のことについて確信が持てません:

マシンAのIP 192.168.103.1があり、ポート5900および3389でサービスが実行されているとします。

IP 192.168.103.254のserverにSSHで接続したい。

マシンB 192.168.103.2は、サーバー 192.168.103.254と異なるポート(たとえば6001と4001)でトンネルを使用してマシンAに接続したいと考えています。

したがって、セットアップは次のようになります。

マシンB 192.168.103.2-> VNCからサーバー 192.168.103.254:6001(サーバーリダイレクト-> 192.168.103.1:5900)

SSHトンネリングとリバースSSHトンネリングについては少し知っていますが、どのコマンドが必要かわかりません。

ご注意ください:

  • クライアントPCはサーバーに接続する必要があります(クライアントは毎回異なるIPアドレスを持っているため、その逆は不可能です)

私が試したこと:

ssh -f [email protected] -L 6001:localhost:5900 -N

このコマンドは成功しますが、接続しようとすると、接続拒否エラーが発生します。

Tims-Macbook-Pro:~ Tim$ telnet server.hostname.net 6001
Trying 192.168.103.254...
telnet: connect to address 192.168.103.254: Connection refused
telnet: Unable to connect to remote Host

私もこれを試しました

Sudo ssh -NT -R 6001:localhost:5900 [email protected]

このコマンドにアクセスしようとすると、接続拒否エラーも表示されます。

Tims-Macbook-Pro:~ Tim$ telnet server.hostname.net 6001
Trying 192.168.103.254...
telnet: connect to address 192.168.103.254: Connection refused
telnet: Unable to connect to remote Host
2
Timothy

次のコマンドでサーバーのローカルホストポート6001に接続する場合は、マシンAのポート5900に到達する必要があります。

ssh -L 6001:192.168.103.1:5900 [email protected]

SSHトンネリングの詳細については、次のリソースを確認してください。 http://www.linuxhorizo​​n.ro/ssh-tunnel.html

更新:

次のようにサーバーを介してマシンAのポート5900にアクセスする複数のクライアントが必要な場合:

Client1
Client2 ---> port 6001 ---> 192.168.103.254 ---> port 5900 --> 192.168.103.1
Client3

このコマンドを実行する必要があります(client内):

ssh -L 0.0.0.0:6001:192.168.103.1:5900 [email protected]

serverポート6001に接続しているすべてのクライアントは、そのコマンドでマシンAのポート5900に到達します。

2

「ゲートウェイ」サーバーに接続しようとしましたが、そのようなトラフィックが許可されているかどうかはわかりません。最初の例で行ったように、リモートポートをローカルポートにマッピングするのが最善の策ですが、実際には、次のように、接続するサーバーを指す必要があります。

ssh -f [email protected] -L 6001:192.168.103.1:5900 -N

そうでない場合、sshはどのIPに接続を転送する必要があるかをどのように知るのでしょうか?これを行うことにより、server.hostname.netを介したSSHトンネルを介して、リモートサーバー192.168.103.1のポート5900をローカル(マシン)ポート(この場合は6001)にマッピングします。

ここで、接続するには、ローカルポートにアクセスするだけです。

telnet localhost 6001
0
Migtor