Docker容器中的SSH免密登录详解

 更新时间:2023年08月21日 09:16:56   作者:爱吃 香菜  
这篇文章主要介绍了Docker容器中的SSH免密登录详解,在日常的开发和测试环境中经常需要创建和管理Docker容器,有时,出于调试或管理的目的,可能需要SSH到容器内部,本文将介绍如何创建一个Docker容器,它在启动时自动运行SSH服务,并支持免密登录,需要的朋友可以参考下

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 容器映射的端口

运行结果:

注意事项:在生产环境中,强烈建议不要允许root用户通过密码登录。

允许SSH登录到容器并不是一种推荐的做法,因为它可能会增加安全风险。

如果真的需要,考虑使用更安全的方式,如SSH密钥对,而不是密码。

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

原理图解:

到此这篇关于Docker容器中的SSH免密登录详解的文章就介绍到这了,更多相关Docker的SSH免密登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中基本注解的知识点总结

    java中基本注解的知识点总结

    在本篇文章里小编给大家整理的是一篇关于java中基本注解的知识点总结,有需要的朋友们可以跟着学习下。
    2021-06-06
  • IntelliJ IDEA自定义代码提示模板Live Templates的图文教程

    IntelliJ IDEA自定义代码提示模板Live Templates的图文教程

    这篇文章主要介绍了IntelliJ IDEA自定义代码提示模板Live Templates,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java开发支付宝PC支付完整版

    Java开发支付宝PC支付完整版

    这篇文章主要介绍了Java开发支付宝PC支付完整版,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • java如何使用自己的maven本地仓库详解

    java如何使用自己的maven本地仓库详解

    这篇文章主要给大家介绍了关于java如何使用自己的maven本地仓库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • 基于java实现人机猜拳游戏

    基于java实现人机猜拳游戏

    这篇文章主要为大家详细介绍了基于java实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • SpringMVC的执行流程及组件详解

    SpringMVC的执行流程及组件详解

    这篇文章主要介绍了SpringMVC的执行流程及组件详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Spring Cloud Gateway 使用JWT工具类做用户登录校验功能

    Spring Cloud Gateway 使用JWT工具类做用户登录校验功能

    这篇文章主要介绍了Spring Cloud Gateway 使用JWT工具类做用户登录校验的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • SpringBoot获取不到用户真实IP的解决方法

    SpringBoot获取不到用户真实IP的解决方法

    最近遇到个问题,项目部署后发现服务端无法获取到客户端真实的IP地址,本文就来介绍一下这个问题的解决方法,感兴趣的可以了解一下
    2023-08-08
  • SpringBoot整合WebSocket实现实时通信功能

    SpringBoot整合WebSocket实现实时通信功能

    在当今互联网时代,实时通信已经成为了许多应用程序的基本需求,而WebSocket作为一种全双工通信协议,为开发者提供了一种简单、高效的实时通信解决方案,本文将介绍如何使用SpringBoot框架来实现WebSocket的集成,快速搭建实时通信功能,感兴趣的朋友可以参考下
    2023-11-11
  • 解决Spring Boot 在localhost域奇怪的404问题(Mac book pro)

    解决Spring Boot 在localhost域奇怪的404问题(Mac book pro)

    这篇文章主要介绍了解决Spring Boot 在localhost域奇怪的404问题(Mac book pro),需要的朋友可以参考下
    2017-09-09

最新评论