Docker容器中的SSH免密登录

简介:在日常的开发和测试环境中经常需要创建和管理Docker容器。有时,出于调试或管理的目的,可能需要SSH到容器内部。本文将介绍如何创建一个Docker容器,它在启动时自动运行SSH服务,并支持免密登录。

构建支持SSH的Docker镜像:仅为示例,实际操作时应选择更强的密码,并为免密登录生成了必要的SSH密钥。


FROM ubuntu:20.04
MAINTAINER "公众号: 伤心的辣条"


# 安装openssh-server
RUN apt-get update && apt-get install -y openssh-server && \
    mkdir /var/run/sshd

# 设置root密码(在此例中设置为'root',但在生产环境中,请使用更强的密码)
RUN echo 'root:root' | chpasswd

# 为SSH免密登录设置SSH key
RUN rm -f /etc/ssh/ssh_host_rsa_key && \
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \
    rm -f /etc/ssh/ssh_host_dsa_key && \
    ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' && \
    rm -f /etc/ssh/ssh_host_ecdsa_key && \
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \
    rm -f /etc/ssh/ssh_host_ed25519_key && \
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''


# SSH登录设置
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# 容器启动时启动SSH服务
CMD ["/usr/sbin/sshd", "-D"]

构建与运行:注意映射到宿主机的22端口可能与宿主机的SSH服务冲突,可以选择其他端口,本案例使用1234端口。

客户端生成SSH密钥对:

ssh-keygen

使用ssh-copy-id命令来帮助完成免密登录的设置:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@容器所在主机的IP -p 容器映射的端口

SSH连接到容器:完成以上步骤后从任何客户端都可以使用以下命令轻松SSH到容器内,无需密码。

ssh root@容器所在主机的IP -p 容器映射的端口

运行结果:

Docker容器中的SSH免密登录_第1张图片

Docker容器中的SSH免密登录_第2张图片

注意事项:在生产环境中,强烈建议不要允许root用户通过密码登录。允许SSH登录到容器并不是一种推荐的做法,因为它可能会增加安全风险。如果真的需要,考虑使用更安全的方式,如SSH密钥对,而不是密码。

结论:Docker为我们提供了一个轻量级、隔离的环境来运行应用和服务。虽然SSH到容器内部不是一种推荐的操作,但在某些情况下,这可能是必要的。

原理图解:

Docker容器中的SSH免密登录_第3张图片

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

Docker容器中的SSH免密登录_第4张图片

你可能感兴趣的:(软件测试,程序员,自动化测试,docker,容器,软件测试,职场经验,功能测试,python,自动化测试)