(ssh 隧道?)通过具有公共 IP 的 *不同* 服务器访问具有私有 IP 的远程服务器

(ssh 隧道?)通过具有公共 IP 的 *不同* 服务器访问具有私有 IP 的远程服务器

我们假设有以下主机:

  • 本地主机: 我的笔记本电脑
  • 远程服务器:具有公网IP,运行SSH服务器的服务器。
  • 私有远程服务器:具有私有 IP 的服务器,只能从远程服务器

我无法sudo访问远程服务器,所以我无法以 root 用户身份进行更改。

问题是:是否可以访问私有远程服务器远程服务器,用一条命令?

我尝试过 SSH 隧道,但没有成功。它想创建一个 SSH 别名来私有远程服务器作为本文介绍

例如,我想从本地主机运行:

curl http://private.remoteserver:8080/

连接到 private.remoteserver 上的端口 8080。这可能吗?

答案1

您还没有向我们展示您迄今为止尝试过的方法,但是像这样简单的方法应该可以起作用:

ssh -L 8080:private.remoteserver:8080 remoteserver

然后您就可以运行:

curl http://localhost:8080/

...由于我们刚刚设置的端口转发,它实际上会连接到8080上的端口private.remoteserver

如果您希望能够直接http://private.remoteserver:8080/从客户端访问,则需要 (a) 设置某种代理和 (b) 配置 curl(或其他软件)以使用代理。您可以使用以下选项设置SOCKS5代理:ssh-D

ssh -D 1080 remoteserver

然后你可以:

curl --socks5-hostname http://private.remoteserver:8080/

大多数网络浏览器(Firefox、Chrome)也可以配置为使用SOCKS5代理。如果您搜索“ssh 动态转发”,您会找到很多不错的文档,包括这篇文章来自 Ubuntu

答案2

实际上我解决了我的问题穿梭巴士

sshuttle --dns -HN -r user@remoteserver

不需要其他代理配置,然后我就可以访问私有 IP 的任何端口:

curl http://private:8080/

相关内容