是否在docker容器中启用sshd服务,一直是见仁见智,反对一方认为违背了单一容器只运行单一服务的理念,支持的一方认为可以解决远端主机进入容器的安全问题,问题的关键还是在于应用场景,如果仅为应用容器,sshd服务倒不是必须的,如果为系统容器,sshd服务还是需要的。下面是在容器中启用sshd服务的具体操作,进入容器后
[root@86999be36110 /]#yum install net-tools
[root@86999be36110 /]# yum install openssh-server 
[root@86999be36110 /]# mkdir -p /var/run/sshd  
[root@86999be36110 /]# /usr/sbin/sshd -D 
[root@86999be36110 /]# /usr/sbin/sshd -D &
取消pam登录限制,PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系 统中添加新的认证手段。
[root@86999be36110 /]# sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd 
[root@86999be36110 ~]# cd /root  
[root@86999be36110 ~]# ssh-keygen -t rsa 
[root@86999be36110 ~]# vi /root/run-sshd.sh
#!/bin/bash
/usr/sbin/sshd -D
[root@86999be36110 ~]# exit
或 
$ docker stop 86999be36110

对外开放端口

[user@server78 ~]$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED              SIZE
centos7-sshd             latest              229786db0d81        About a minute ago   1.75GB

[user@server78 ~]$ docker run -p 10122:22 centos7-sshd /bin/bash /root/run-sshd.sh

可能会遇到容器root口令认证失败的问题,可以通过修改容器内的/etc/shadow来修改或支队口令

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐