SSHのみを公開するリモートサーバーがあります。ポート3306のデータベースなど、他のポートで実行されるサービスがあります。これらのポートにはリモートでアクセスできませんが、サーバーコンテキスト(localhost:3306
)からアクセスできます。
ssh -L
を使用すると、 リモートサーバー上の単一のポートにアクセス できます。しかし、どうすればallこれらのポートにローカルマシンからssh/sshuttle接続でアクセスできるのでしょうか?
リモートサーバーで、セカンダリ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 を使用して調査して、シャトル接続を管理できます。