ssh连接服务器中的docker

最近在服务器上的docker配置pytorch环境,即需要通过本地电脑使用ssh连接服务器里的docker的22端口,过程就是先使用ssh连接上服务器,在服务器内进行端口转换。有两种方法,1.在创建docker容器时使用-p 指定端口映射,再配置容器内的ssh-server即可;2.容器创建完后,如果想添加端口转换,可以使用iptables进行添加

步骤

  1. 添加一条规则,将从非 docker0 接口上,目的端口为 10022 的 tcp 报文,修改其目的地址为 172.17.0.2:22,这里的172.17.0.2是容器的地址,根据容器修改,10022可以自定义,22为ssh监听端口,无须修改;
sudo iptables -t nat -A DOCKER ! -i docker0 -p tcp --dport 10022 -j DNAT --to-destination 172.17.0.2:22
  1. 在主机发出的本地公网或内网 ip 加端口号 10022 的请求会被定位到 172.17.0.2:22 上,但是在将请求转发到 docker0 网桥上时,对于默认的 filter 表中的 FORWARD 链的规则是 DROP,因此还需要在 filter 表中设置相应的规则;
sudo iptables -t filter -A FORWARD ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 -j ACCEPT --dport 22
  1. 在容器内安装openssh-server和vim, 然后在容器vim /etc/ssh/sshd_config,改动PermitRootLogin yes,使得root能使用ssh登录,service ssh restart重启ssh服务, passwd root对root修改密码;
 ssh -p 10022 [email protected]

这里的172.26.201.93是服务器的地址,填入的密码是刚刚在容器内修改的密码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章