浅析如何使docker容器可以进行ssh连接

  不论是开发者是运维人员,都经常有需要进入容器的诉求,目前看,主要的方法不外乎以下几种:

(1)使用ssh登陆进容器,需要在容器中安装启动sshd,存在开销和攻击面增大的问题,同时也违反了Docker所倡导的一个容器一个进程的原则。容器本身是一个无状态,用后即焚的东西。为了尽量的轻量快捷建议一个容器尽量只有一个进程,否则你的容器会越来越大,越来越像一个虚拟机一样笨重不宜维护。

(2)使用docker本身提供的工具,大多数情况最好还是使用Docker原生方法,Docker目前主要提供了Docker exec和 Docker attach两个命令。

  我之前有篇博客是用 centos 镜像作为基础镜像来进行 ssh 连接,但是我们现在要做的是要以各种数据库如:postgres、mysql等的镜像作为基础镜像来 ssh 连接,所以需要换一种方式。

  主要参考这几篇博客吧。

1、使用ssh连接docker容器:https://blog.csdn.net/qq_34021712/article/details/73379851

2、SSH 的安装

  SSH 分客户端 openssh-client 和 openssh-server

  如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client)。

  如果要使本机开放SSH服务就需要安装openssh-server。

复制代码
#配置ssh#

echo -e "\033[31;1m ******************************* \033[0m"
echo -e "\033[31;1m ************安装和配置ssh************ \033[0m"
sudo apt-get install -y openssh-server 1> /dev/null
sudo sed -i 's/UsePAM no/UsePAM yes/g' /etc/ssh/sshd_config
sudo sed -i '8a /etc/init.d/ssh start' /etc/profile
sudo /etc/init.d/ssh start
ps -e | grep ssh

echo -e "\033[31;1m ssh授权 \033[0m"
cd ~/.ssh/
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys

$ ps -e|grep ssh
 2151 ?        00:00:00 ssh-agent
 5313 ?        00:00:00 sshd
复制代码

  ssh-agent表示ssh-client启动,sshd表示ssh-server启动了。如果缺少sshd,说明ssh服务没有启动或者没有安装。

3、sshd_config 中 PermitRootLogin 的探讨:https://blog.csdn.net/huigher/article/details/52972013

  关于 PermitRootLogin 的可选项:

  sshd_config是sshd的配置文件,其中PermitRootLogin可以限定root用户通过ssh的登录方式,如禁止登陆、禁止密码登录、仅允许密钥登陆和开放登陆,以下是对可选项的概括:



  以上选项中,yes和no的功能显而易见,只是很粗暴的允许、禁止root用户进行登陆。without-password在yes的基础上,禁止了root用户使用密码登陆。

4、Ubuntu基础设定:openssh-server安装和使用 ——  https://blog.csdn.net/liumiaocn/article/details/79427964

 

posted @   古兰精  阅读(2332)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-08-12 Nodejs-JWT token认证:为什么要使用token、token组成(头部、载荷、签名)、jwt使用过程以及token对比session的好处(单点登录、减轻服务器压力、存储信息等)
2020-08-12 多站点单点登录实现业务思路
2020-08-12 多站点单点登录实现设计方案
2017-08-12 浅析List.remove在for循环中会出现的问题及解决方案
2017-08-12 MyBatis报错:Mapped Statements collection already contains value for XXX 的可能原因
2017-08-12 浅析int类型参数当不传参时默认总是0的问题
2017-08-12 浅析FOUC是什么以及如何避免
点击右上角即可分享
微信分享提示