不論是開發者是運維人員,都經常有需要進入容器的訴求,目前看,主要的方法不外乎以下幾種:
(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