我们假设以下主机:
我没有sudo访问远程服务器的权限,所以我无法对root用户进行更改。
问题是 :是否可以通过一个命令从远程服务器访问private.remoteserver上的端口?
我已经玩了一些ssh隧道,没有运气。 如本文所述,它想创build一个到private.remoteserver的SSH别名。
例如,我想从本地主机运行:
curl http://private.remoteserver:8080/
连接到private.remoteserver上的端口8080。 这可能吗?
到目前为止,你还没有向我们展示你所尝试过的东西,但是这样简单的事情应该可以发挥作用:
ssh -L 8080:private.remoteserver:8080 remoteserver
然后,让你运行:
curl http://localhost:8080/
…由于我们刚设置的端口转发,实际上会连接到private.remoteserver上的端口8080 。
如果您希望能够直接从您的客户端访问http://private.remoteserver:8080/ ,则需要(a)设置某种代理服务器,(b)configurationcurl(或其他软件)代理。 你可以用-D选项设置一个带有ssh的SOCKS5代理:
ssh -D 1080 remoteserver
然后你可以:
curl --socks5-hostname http://private.remoteserver:8080/
大多数网页浏览器(Firefox,Chrome)也可以configuration为使用SOCKS5代理。 如果你search“sshdynamic转发”,你会发现很多很好的文档,包括Ubuntu的这篇文章 。
其实我用sshuttle解决了我的问题:
sshuttle --dns -HN -r user@remoteserver
没有其他代理configuration需要,那么我可以访问私有IP的任何端口:
curl http://private:8080/