基于commit为镜像增加ssh服务(Ubuntu)

1、准备工作
获取Ubuntu镜像,并创建一个容器

docker pull docker.io/ubuntu
docker run -it --name baseubuntu ubuntu:latest

2、安装和配置ssh服务(进入容器)
①更新下apt-get

root@b3e5f92e6dde:/# apt-get update

②安装SSH服务,选择主流的openssh-server作为服务端

root@b3e5f92e6dde:/# apt-get -y install openssh-server

③如果需要正常启动SSH服务,必须要有/var/run/sshd目录存在

root@b3e5f92e6dde:/# mkdir -p /var/run/sshd
root@b3e5f92e6dde:/# /usr/sbin/sshd -D &   //&代表后台执行,不加的话一直处于ssh的状态

④此时查看容器的22端口(SSH服务默认监听的端口),已处于监听状态

root@b3e5f92e6dde:/# netstat -tunlp
//如果提示没有netstat命令的先安装下
root@b3e5f92e6dde:/# apt-get install net-tools
image.png

⑤取消UsePAM登录限制,设置UsePAM no

root@b3e5f92e6dde:/# vi /etc/ssh/sshd_config
image.png

⑥可另起一窗口(或退出容器),配置在宿主机配置需要的公钥信息

[testerZ@azeng ~]$ ssh-keygen -t rsa
[testerZ@azeng ~]$ cat ~/.ssh/id_rsa.pub   //复制公钥

⑦在root下创建.ssh目录,将上一步骤得到的公钥复制到/root/.ssh/authorized_kesy中

root@b3e5f92e6dde:/# mkdir -p /root/.ssh/
root@b3e5f92e6dde:/# vi /root/.ssh/authorized_keys

⑧创建启动自动SSH服务的文件,并设置权限

root@b3e5f92e6dde:/# vi /run.sh
//以下为内容
#!/bin/bash
/usr/sbin/sshd -D

root@b3e5f92e6dde:/# chomd +x run.sh

⑨docker commit生成新的镜像

[testerZ@azeng ~]$ docker commit b3e5f92e6dde my_sshd:ubuntu

3、使用镜像,通过ssh登录容器

[testerZ@azeng ~]$ docker run -p 10022:22 -d my_sshd:ubuntu /run.sh
[testerZ@azeng ~]$ ssh localhost -p 10022   
Enter passphrase for key '/home/testerZ/.ssh/id_rsa':     //输入之前设置公钥时的密码

 //root用户登录,或者在第⑤设置时,设置PermitRootLogin yes
[testerZ@azeng ~]$ ssh root@localhost -p 10022   
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容