Docker | Centos7容器开启ssh

  • 内容
  • 相关

. docker hub 下载centos 官方镜像

docker pull centos:7

 

运行容器

docker run -i -t -p 1022:22 --name ssh centos:7 /bin/bash

 

. 安装passwd,openssl,openssh-server

yum -y update

yum install passwd openssl openssh-server -y

 

启动sshd:

# /usr/sbin/sshd -D &

正常启动需要pid文件存在,可以创建/var/run/ssh

这时报以下错误:

[root@ b5926410fe60 /]# /usr/sbin/sshd

Could not load host key: /etc/ssh/ssh_host_rsa_key

Could not load host key: /etc/ssh/ssh_host_ecdsa_key

Could not load host key: /etc/ssh/ssh_host_ed25519_key

 

执行以下命令解决:

[root@b5926410fe60 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' 

[root@b5926410fe60 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''

[root@b5926410fe60 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''

 

然后,修改 /etc/ssh/sshd_config 配置信息:

UsePAM yes 改为 UsePAM no

UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no

 

[root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config

[root@b5926410fe60 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

 

修改完后,重新启动sshd

[root@b5926410fe60 /]# /usr/sbin/sshd -D &

编写简单的启动脚本,方便直接后台运行容器ssh服务远程连接容器

vim /sshd.sh

#!/bin/bash

/usr/sbin/sshd -D

chmod 755 /sshd.sh

 

. 修改root 密码

 [root@b5926410fe60 /]# passwd root

 

. 将当前容器保存为镜像

docker ps -all

docker commit ce09 centos7-ssh

 

. 在宿主机上基于新创建的镜像启动新的容器

--先删除之前的容器 docker ps -all

docker rm -f 4122f818a741

 

--基于新镜像运行容器

docker run -t -i -p 10021:22 --name one_ssh centos7-ssh:latest /bin/bash

docker run -p 10022:22 -d centos7-ssh:latest /run.sh

当容器内22端口启动后才可以用docker ps -a看到相应的端口

保证22端口启动后就可以进行远程 连接了。

至此,可以直接拿此镜像使用了。同时参照一下这篇文章:Docker | Dockerfile 编写:ssh服务

 您阅读这篇文章共花了:

上一篇:Linux | 常用iptables示例

下一篇:Emlog | 实现全文搜索功能

本文标签:    

版权声明:本文依据CC-BY-NC-SA 3.0协议发布,若无特殊注明,本文皆为《fishyoung》原创,转载请保留文章出处。

本文链接:Docker | Centos7容器开启ssh - http://www.fishyoung.com/post-229.html