web-dev-qa-db-ja.com

sshuttle経由で複数のリモートサーバーポートを公開するにはどうすればよいですか?

SSHのみを公開するリモートサーバーがあります。ポート3306のデータベースなど、他のポートで実行されるサービスがあります。これらのポートにはリモートでアクセスできませんが、サーバーコンテキスト(localhost:3306)からアクセスできます。

ssh -Lを使用すると、 リモートサーバー上の単一のポートにアクセス できます。しかし、どうすればallこれらのポートにローカルマシンからssh/sshuttle接続でアクセスできるのでしょうか?

5
david.libremone

リモートサーバーで、セカンダリIPアドレス、たとえば10.0.0.1を定義し、それ自体を指します。 (127.0.0.1と同じ方法です。)

ローカルマシンで、次のようにシャトル接続を作成します。

sshuttle -r user@remote 10.0.0.1
# "user" is your username on the remote machine
# "remote" is the name or IP address of the remote machine

これで、10.0.0.1アドレスのリモートサーバーにアクセスできます。 10.0.0.1からの接続を「それ自体」であると理解するため、すべてのポートはそのアドレスでアクセス可能です。 (シャトル接続を閉じるとすぐにアクセスできなくなります。)

これは、次のコマンドで確認できます。

nmap remote # returns only ssh port
nmap 10.0.0.1 # returns all ports

これで、アドレス10.0.0.1:3306を使用してデータベースに接続できます。たとえば、MySQLデータベースの場合、MySQL Workbenchを使用して接続できます。

この方法が適している場合は、 sshoot を使用して調査して、シャトル接続を管理できます。

4
david.libremone