首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从码头容器通过ssh隧道TCP通信量?

如何从码头容器通过ssh隧道TCP通信量?
EN

Stack Overflow用户
提问于 2018-09-04 13:17:24
回答 1查看 2K关注 0票数 2

这里是我的情况:基于lambci/lambda:build-nodejs8.10,我在本地的容器中运行了一个应用程序。应用程序在两个urls上向远程服务器发送https请求。然而,远程服务器只接受来自我的办公网络的IP请求。我可以使用VPN连接到办公网络,但它并没有配置成只访问网络上的机器,就给我一条通向互联网的路由。我所能做的就是在办公网络上把ssh转换成机器,这些机器确实可以上网。

尝试解决方案和以前的解决方案:在我只需要向一个URL发送请求之前,比如说远程1.com。我通过ssh转发端口来解决这个问题,如下所示:

  1. 连接到本地计算机上的VPN
  2. 使用bash shell以交互式模式启动对接器容器
  3. 将远程1.com的流量重定向到本地主机: echo "127.0.0.1 remote1.com" >> /etc/hosts
  4. 通过ssh将通信量转发到127.0.0.1:443到office.machine.com: ssh user@office.machine.com -L 443:remote1.com:443
  5. 从新的终端连接到码头容器并启动应用程序。

这是非常好的工作,只有一个远程url。尝试执行步骤2-4两次将无法工作,因为端口已经被转发。

我试过在码头集装箱上开梭子。安装它很好(通过克隆git ):

代码语言:javascript
复制
git clone https://github.com/sshuttle/sshuttle.git
cd sshuttle
sudo ./setup.py install

但是,运行它会导致以下错误:

代码语言:javascript
复制
iptables v1.4.18: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
firewall manager: undoing changes.
firewall manager: undoing IPv4 changes.
iptables v1.4.18: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
firewall manager: Error trying to undo IPv4 firewall.
firewall manager: ---> Traceback (most recent call last):
firewall manager: --->   File "/usr/local/lib/python2.7/site-packages/sshuttle-0.78.5.dev10+g561b648-py2.7.egg/sshuttle/firewall.py", line 270, in main
firewall manager: --->     method.restore_firewall(port_v4, socket.AF_INET, udp, user)
firewall manager: --->   File "/usr/local/lib/python2.7/site-packages/sshuttle-0.78.5.dev10+g561b648-py2.7.egg/sshuttle/methods/nat.py", line 99, in restore_firewall
firewall manager: --->     if ipt_chain_exists(family, table, chain):
firewall manager: --->   File "/usr/local/lib/python2.7/site-packages/sshuttle-0.78.5.dev10+g561b648-py2.7.egg/sshuttle/linux.py", line 33, in ipt_chain_exists
firewall manager: --->     raise Fatal('%r returned %d' % (argv, rv))
firewall manager: ---> Fatal: ['iptables', '-t', 'nat', '-nL'] returned 3
firewall manager: undoing /etc/hosts changes.
firewall manager: Error trying to undo /etc/hosts changes.
firewall manager: ---> Traceback (most recent call last):
firewall manager: --->   File "/usr/local/lib/python2.7/site-packages/sshuttle-0.78.5.dev10+g561b648-py2.7.egg/sshuttle/firewall.py", line 282, in main
firewall manager: --->     restore_etc_hosts(port_v6 or port_v4)
firewall manager: --->   File "/usr/local/lib/python2.7/site-packages/sshuttle-0.78.5.dev10+g561b648-py2.7.egg/sshuttle/firewall.py", line 51, in restore_etc_hosts
firewall manager: --->     rewrite_etc_hosts({}, port)
firewall manager: --->   File "/usr/local/lib/python2.7/site-packages/sshuttle-0.78.5.dev10+g561b648-py2.7.egg/sshuttle/firewall.py", line 30, in rewrite_etc_hosts
firewall manager: --->     os.link(HOSTSFILE, BAKFILE)
firewall manager: ---> OSError: [Errno 18] Invalid cross-device link
fatal: ['iptables', '-t', 'nat', '-nL'] returned 3
c : fatal: cleanup: ['/usr/bin/python', '/usr/local/bin/sshuttle', '-v', '-v', '--method', 'auto', '--firewall'] returned 99
 s:   Ready: 1 r=[4] w=[] x=[]

我能做的和不能做的:

Can:

  • 在本地PC上安装软件和更改配置(Win/Ubuntu)
  • 在docker映像上安装软件(但在默认情况下并非所有包都可用)

不能:

  • 更改远程或office服务器上的配置或安装软件

是否有一种方法可以通过ssh运行在docker容器中的应用程序运行所有(或对两个特定urls的所有HTTPS请求) TCP通信量?

EN

回答 1

Stack Overflow用户

发布于 2019-03-22 15:17:54

也许丙链能帮你。

首先,将ssh命令更改为在端口9050处打开socks代理:

ssh user@office.machine.com -D 9050

然后将您的停靠映像配置为启动节点,如下所示:

proxychains node --node_parameters

这将导致来自节点应用程序的所有请求通过位于localhost:9050的socks代理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52167274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档