我有一台仅公开 SSH 的远程服务器。它在其他端口上运行着服务,例如端口 3306 上的数据库。这些端口无法远程访问,但可以从服务器上下文 ( localhost:3306
) 内访问。
使用ssh -L
我可以访问远程服务器上的单个端口但我该如何全部我的本地机器是否可以通过 ssh/sshuttle 连接访问这些端口?
答案1
在远程服务器上定义一个辅助 IP 地址例如 10.0.0.1 指向自身。(127.0.0.1 也是一样。)
在您的本地机器上,创建您的 sshuttle 连接,如下所示:
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 的连接理解为“它自己”,因此所有端口都可在该地址访问。(关闭 sshuttle 连接后,这些端口将无法访问。)
您可以使用以下命令确认这一点:
nmap remote # returns only ssh port
nmap 10.0.0.1 # returns all ports
现在,您可以使用地址连接到数据库10.0.0.1:3306
。例如,如果它是 MySQL 数据库,则可以使用 MySQL Workbench 连接到它。
如果这种方法适合你,你可能需要研究使用拍摄管理您的 sshuttle 连接。