Docker實現CentOS容器SSH遠程登錄


Docker實現CentOS容器SSH遠程登錄

https://blog.csdn.net/A632189007/article/details/78625378

這里根據Dockerfile方式構建一個CentOS的可遠程SSH的鏡像。

Dockerfile文件
在/data/test/sshd_centos/目錄下新建Dockerfile文件。注意:目錄可以自行設定,但目錄下除了Dockerfile文件外建議不要放置別的文件和目錄。

vim Dockerfile
1

生成的新鏡像以centos鏡像為基礎

FROM centos

指定作者信息

MAINTAINER by Test

安裝openssh-server

RUN yum -y install openssh-server

RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

指定root密碼

RUN /bin/echo 'root:123456'|chpasswd
RUN /bin/sed -i 's/.session.required.pam_loginuid.so./session optional pam_loginuid.so/g' /etc/pam.d/sshd
RUN /bin/echo -e "LANG="en_US.UTF-8"" > /etc/default/local
EXPOSE 22
CMD /usr/sbin/sshd -D
build鏡像
在Dockerfile當前目錄執行下面語句,開始構建鏡像。注意最后面的點不要忘了,表明是讀取當前目錄的Dockerfile文件。

docker build -t bigdata/centos-ssh:v1.0.0 .

bigdata/centos-ssh:v1.0.0:新生成的鏡像名稱及版本號

打包成功的話會出現下面的提示,可能時間會有點長,耐心等待。

Successfully built 2d548392b205

查看鏡像
docker images

這里寫圖片描述

啟動容器
docker run -itd -p 10022:22 --name test_centos_1 sshd/centos:v1.0

后台啟動一個容器,將該容器名稱設置為:test_centos_1,將容器端口22映射到宿主機端口10022。

遠程訪問
遠程通過 宿主機IP、映射端口10022進行訪問容器。

ssh遠程連接docker中的container
由於工作需要,要遠程連接container,本地機器是windows,以下為解決步驟:

  1. 環境

    本地:Windows

    docker版本1.12

    遠程:docker中的Container(Ubuntu)

  2. Container安裝ssh服務

首先進入Container,進行以下步驟:

① 安裝ssh

sudo apt-get install openssh-server #安裝ssh服務器
service ssh status # 查看ssh服務啟動情況
service ssh start # 啟動ssh服務
② 配置ssh,允許root登陸
vi /etc/ssh/sshd_config
將PermitRootLogin的值從withoutPassword改為yes
③ 重啟ssh服務

service ssh restart # 重啟動ssh服務

  1. 保存Container鏡像
    另外開啟Docker Quickstart Terminal,保存鏡像

docker ps #查看正在運行的container
找到所要保存的container的container id,假設為xxxxxx
docker commit xxxxxxxx tomjerry/foobar
(注:tomjerry/foobar為要保存的新鏡像的名字,可任意寫)

  1. 重新運行Container

docker run -it -p 50001:22 tomjerry/foobar /bin/bash
service ssh start
注意-p 50001:22這句,意思是將docker的50001端口和container的22端口綁定,這樣訪問docker的50001等價於訪問container的22端口

  1. ssh連接container
    你可以用xshell或putty等ssh客戶端工具連接container

首先假設各方的ip如下:

本地windows ip: 192.168.99.1
docker ip:192.168.99.100
container ip:172.17.0.3
那么,你要遠程container,則要訪問以下地址:
ssh 192.168.99.100:50001

這樣通過訪問docker的50001端口,就神奇的間接連通到container的22端口了,從而達到ssh連接container的目的,至此。
用戶密碼驗證方式登錄:

1、查看 鏡像列表:$ sudo docker images

2、開啟容器:$ sudo docker run -tid -p 22 -P 鏡像名

3、進入容器:$ sudo docker exec -it 容器名 /bin/bash

4、進入容器之后進行編輯ssh文件,如果沒有ssh,需要先安裝:

安裝ssh-client命令:sudo apt-get install openssh-client

安裝ssh-server命令:sudo apt-get install openssh-server

安裝完成以后,先啟動服務:sudo /etc/init.d/ssh start
啟動后,可以通過“ps -e|grep ssh”查看是否正確啟動。

5、編輯ssh配置文件:$sudo vim/etc/ssh/sshd_config

PermitRootLogin without-password 改為 PermitRootLogin yes`

PasswordAuthentication yes 改為 PasswordAuthentication no

6、重啟服務:$ sudo service ssh restart
7、設置ssh密碼:$ passwd root

  Enter new UNIX password: 
   Retype new UNIX password: 
   passwd: password updated successfully

8、查看容器ip:$ ifconfig

9、可以在主服務器中鏈接docker:$ ssh -p 50001 root@172.17.0.2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM