Docker 以 ubuntu 基础镜像制作 ssh

1.5K+次阅读
没有评论

共计 1070 个字符,预计需要花费 3 分钟才能阅读完成。

一、创建 entrypoint.sh

#!/bin/bash
set -e

# 设置 SSH 端口
if [[ -n "$PORT" ]]; then
    sed -i "s/^#Port .*/Port ${PORT}/" /etc/ssh/sshd_config
    sed -i "s/^Port .*/Port ${PORT}/" /etc/ssh/sshd_config
fi

# 设置 root 密码
echo "root:${PASSWORD}" | chpasswd

echo "SSH 服务已启动"
echo "root 密码:${PASSWORD}"
echo "SSH 端口:${PORT:-22}"

# 启动 SSH 服务
exec /usr/sbin/sshd -D

创建 entrypoint.sh 主要是为了 docker run 启动时可以根据环境变量修改 root 密码。

二、创建 dockerfile

FROM ubuntu:20.04

COPY entrypoint.sh /entrypoint.sh

RUN sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list && apt update && \
apt-get install -y openssh-server && \
mkdir /var/run/sshd && \
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
chmod +x /entrypoint.sh

ENV PASSWORD "123456"

ENV PORT=2222

ENTRYPOINT ["bash", "-c", "/entrypoint.sh"]

dockerfile 内容主要是指定了 root 默认密码为 123456,安装 openssh-server,然后修改配置文件使 root 可以远程登录,并且将入口文件 entrypoint.sh复制到镜像内。

三、制作和启动

# 制作
docker build -t myssh .
# 启动 (如果不指定 PASSWORD, 默认密码为 123456)
docker run -d --name myssh --net host -e PORT=2222 -e PASSWORD="123456" myssh
# 测试
ssh localhost -p 2222

四、其他

1、启动 sshd 报错 Missing privilege separation directory: /run/sshd

是因为没有创建 /run/sshd 文件夹。创建镜像时,加上 mkdir /var/run/sshd 即可。

提醒:本文发布于1032天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 0
阿蛮君
版权声明:本站原创文章,由 阿蛮君 于2022-09-13发表,共计1070字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2023-2025 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 又拍云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock