我们假设有以下主机:
- 本地主机: 我的笔记本电脑
- 远程服务器:具有公网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/