Docker容器中的SSH免密登录

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

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

  1. FROM ubuntu:20.04

  2. MAINTAINER "公众号: 咖啡加剁椒"

  3. # 安装openssh-server

  4. RUN apt-get update && apt-get install -y openssh-server && \

  5. mkdir /var/run/sshd

  6. # 设置root密码(在此例中设置为'root',但在生产环境中,请使用更强的密码)

  7. RUN echo 'root:root' | chpasswd

  8. # 为SSH免密登录设置SSH key

  9. RUN rm -f /etc/ssh/ssh_host_rsa_key && \

  10. ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \

  11. rm -f /etc/ssh/ssh_host_dsa_key && \

  12. ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' && \

  13. rm -f /etc/ssh/ssh_host_ecdsa_key && \

  14. ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \

  15. rm -f /etc/ssh/ssh_host_ed25519_key && \

  16. ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''

  17. # SSH登录设置

  18. RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

  19. # 容器启动时启动SSH服务

  20. 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到容器内部不是一种推荐的操作,但在某些情况下,这可能是必要的。

原理图解:

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/12114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(八)SQL基础知识练习题(选择题)(下)#CDA学习打卡

本文整理了SQL基础知识相关的练习题,共133道,可作为CDA一级的补充习题,也适用于刚入门初级SQL想巩固基础的同学。来源:如荷学数据科学题库(技术专项-SQL)。暂时按照原题库顺序present,如有需要之…

Matlab如何批量导出多张高质量论文插图?科研效率UpUp第9期

上一期文章中,分享了Matlab导出高质量论文插图的方法(Matlab如何导出高质量论文插图?科研效率UpUp第8期)。 进一步,假如我们想要批量导出多张高质量无变形论文插图,该如何操作呢? ​也很简单&…

Java虚拟机栈

介绍 Java虚拟机栈(Java Virtual Machine Stack,简称JVM Stack)是Java虚拟机的一个组成部分,它用于存储方法的局部变量、操作数栈以及动态链接和方法出口信息。JVM在执行Java程序时,每个线程都会有一个私有的JVM栈&…

USB2514BI-AEZG-TR USB2.0 接口转换集成电路 QFN-36参数指南

USB2514BI-AEZG-TR USB接口集成电路 USB2514BI-AEZG-TR 是一款USB接口集成电路。工作电压为3.3V,采用36-Pin VQFN封装。它支持USB 2.0协议,最大操作频率为24 MHz,最小操作供应电压为3V,最大输出电流为150mA。该器件适用于需要USB集…

VALSE 2024合合信息 | 文档解析与向量化技术加速多模态大模型训练与应用

第十四届视觉与学习青年学者研讨会(VALSE 2024)近期在重庆悦来国际会议中心圆满举行,由中国人工智能学会(CAAI)、中国图象图形学会(CSIG)、中国民族贸易促进会主办,重庆邮电大学承办…

AWS ECS On Fargate 监控可观测最佳实践

概述 Amazon ECS on Fargate 为用户提供了简单、高效且可靠的容器化解决方案,使用户能够专注于应用程序开发和运行,而无需担心基础设施管理的复杂性。与其同时,用户需要实时了解在该环境中应用程序运行的性能、可用性、健康状况和资源使用情…

【BUUCTF】Crypto_RSA(铜锁/openssl使用系列)

【BUUCTF】Crypto_RSA(铜锁/openssl使用系列) 1、题目 在一次RSA密钥对生成中,假设p473398607161,q4511491,e17 求解出d作为flga提交 2、解析 RSA加密过程: 1)选择素数:选择两个不…

rabbitmq交换机,死信队列的简单例子

假设我们有一个场景,生产者有消息发到某个直连交换机,这个交换机上有两个队列分别存储两种类型的消息,但是与这两个队列相连的消费者太不争气了,处理消息有点慢,我们想5秒钟这个消息在队列中还没有被消费的话&#xff…

【MIT6.S081】Lab7: Multithreading(详细解答版)

实验内容网址:https://xv6.dgs.zone/labs/requirements/lab7.html 本实验的代码分支:https://gitee.com/dragonlalala/xv6-labs-2020/tree/thread2/ Uthread: switching between threads 关键点:线程切换、swtch 思路: 本实验完成的任务为用户级线程系统设计上下文切换机制…

SGPM02陀螺仪模块通过惯性导航助力AGV小车的发展

之前我们介绍过SGPM01系列陀螺仪模块在智能泳池清洁机器人导航的方案(SGPM01)。这款惯性导航模块收到了许多企业的欢迎。由此,爱普生推出了SGPM02系列陀螺仪模块通过惯性导航,助力AGV小车的发展。 AGV是一种用于运输材料的无人驾驶车辆,并且A…

ICode国际青少年编程竞赛- Python-5级训练场-带参数函数

ICode国际青少年编程竞赛- Python-5级训练场-带参数函数 1、 def get_item(a):Dev.step(a)Dev.step(-a) get_item(4) Spaceship.step(2) get_item(2) Spaceship.step(3) get_item(5) Spaceship.step(2) get_item(3) Spaceship.step(3) get_item(4)2、 def get_item(a): D…

老杨说运维 | 金融业数据中心的发展趋势

【这是老杨在2023.10乌镇大会上的演讲(一)。接下来,6月初老杨又要在成都开讲了。到时候再发新的】 最近几年,“企业数字化转型”是行业内最热的一个词。当然,“新质生产力”又成了这个月最热的词。虽然新词热词层出不…

基于JAVA8的lambda递归的treeNode树形遍历

1.TreeNode类 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List;Data NoArgsConstructor AllArgsConstructor public class TreeNode {Integer id;String value;/** 子节点信息 */List<TreeNode> childr…

SHELL-双重循环习题练习

1.99乘法表 #!/bin/bash #99乘法表for ((second1; second<9; second)) dofor ((first1; first<second; first))do echo -n -e "${first}*${second}$[first*second]\t" done echo done ######### 首先定义了一个外循环变量second&#xff0c;初始值为1&am…

AI 情感聊天机器人工作之旅 —— 与复读机问题的相遇与别离

前言&#xff1a;先前在杭州的一家大模型公司从事海外闲聊机器人产品&#xff0c;目前已经离职&#xff0c;文章主要讨论在闲聊场景下遇到的“复读机”问题以及一些我个人的思考和解决方案。文章内部已经对相关公司和人员信息做了去敏&#xff0c;如仍涉及到机密等情况&#xf…

linux学习:多媒体开发库SDL+视频、音频、事件子系统+处理yuv视频源

目录 编译和移植 视频子系统 视频子系统产生图像的步骤 api 初始化 SDL 的相关子系统 使用指定的宽、高和色深来创建一个视窗 surface 使用 fmt 指定的格式创建一个像素点​编辑 将 dst 上的矩形 dstrect 填充为单色 color​编辑 将 src 快速叠加到 dst 上​编辑 更新…

连锁收银系统源代码有哪些功能,进销存+收银+会员+门店补货+线上商城

在现代零售行业&#xff0c;高效的管理系统是保持连锁店运营顺畅的关键。而开源连锁收银系统作为一款功能丰富的管理软件&#xff0c;为零售企业提供了全面的解决方案&#xff0c;涵盖了进销存管理、收银、会员、门店补货以及线上商城等多个方面&#xff0c;帮助企业实现精细化…

C语言判断字符旋转

前言 今天我们使用c语言来写代码来实现字符串选择的判断&#xff0c;我们来看题目 题目描述 写一个函数&#xff0c;判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如&#xff1a;给定s1 AABCD和s2 BCDAA&#xff0c;返回1 给定s1abcd和s2ACBD&#xff0c;返回0. A…

想白嫖?音视频的文本提取和总结?NoteGPT满足你

NoteGPT实现了音频、录音以及视频的AI总结 NoteGPT最近做了一个功能&#xff1a;Audio Summary&#xff08;Audio Summary with AI - NoteGPT&#xff09; 1&#xff09;完全免费&#xff1b; 2&#xff09;支持mp3、mp4&#xff1b; 3&#xff09;支持URL和本地上传&…

【UE Niagara】在UI上生成粒子

效果 步骤 1. 在虚幻商城中将“Niagara UI Render”插件安装到引擎 2. 打开虚幻编辑器&#xff0c;勾选插件“Niagara UI Renderer”&#xff0c;然后重启编辑器 3. 先创建一个控件蓝图&#xff0c;该控件蓝图只包含一个按钮 这里设置尺寸框尺寸为200*50 4. 显示该控件 5. 新…