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是服務器的地址,填入的密碼是剛剛在容器內修改的密碼

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