浅析如何使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