我将教别人如何使用ubuntu和python,我想设置他们自己的沙箱来玩,所以我使用LXC并按照本指南设置容器:
https://www.digitalocean.com/community/articles/getting-started-with-lxc-on-an-ubuntu-13-04-vps
但是,我有一个问题,我无法使用Putty SSH到该容器。虽然我可以正常使用putty SSH到我自己的盒子里,然后在其中启动一个ssh,我需要在那里登录。但是,我希望他们能够自己登录。
出于显而易见的原因,我不希望他们可以访问主盒本身,因为我用它来工作,所以如果他们删除任何东西或导致问题,我可能会遇到麻烦。
我想简单地设置容器,他们可以乱搞并运行程序或移动文件或做任何他们喜欢的事情而不会弄乱主盒,然后能够自己登录它而不受干扰。
我该怎么做呢?
由于您的LXC将具有内部IP地址,例如10.x.x.x.您需要应用iptables规则,允许从主机服务器端口转发到LXC内部虚拟IP地址。
要执行此操作,您需要在LXC实例上打开/ etc / ssh / sshd_config,并将SSH的侦听端口更改为与主机服务器不同的端口。
例如,将主机设置为25000并将LXC设置为25001.注意主机服务器上的所有唯一LXC实例都需要使用不同的ssh端口。一旦你改变了这个,在主机服务器上添加以下iptables规则,而不是你的LXC。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25001 -j DNAT --to 10.x.x.x:25001
其中eth0应该是您的LXC以太网卡,10..x.x.x是您的LXC内部IP地址。这会将ssh流量从主机服务器转发到正确端口上的LXC
完成后,您应该能够通过ssh登录以下内容
ssh -p 25001 user @ LXC_host_server_IP
请注意,您需要定位的主机服务器ip而不是LXC。主持人会将流量转发给您的LXC。
此方法可用于任何服务,因此如果您在LXC中设置apache或Nginx,则可以为端口80,8080,443等执行相同的端口转发。
希望这有助于某人。
使用ssh隧道连接到容器。配置lxc容器使用bridge
sudo vi /etc/init/lxc-net.conf
添加此行
env USE_LXC_BRIDGE="true"
重启net-service以影响配置
# /etc/init.d/lxc-net restart
启动lxc容器
# lxc start <container-name>
在主机中使用以下命令创建侦听端口9001的隧道
# ssh -L 0.0.0.0:9001:<ip-of-the-container>:22 localhost
连接到隧道
$ ssh -p 9001 <userid>@<ip-of-the-host>