Docker是一個(gè)非常流行的容器化平臺(tái),它簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā)、部署和管理。但是,在使用Docker時(shí),有時(shí)需要在容器內(nèi)部執(zhí)行SSH命令??梢允褂肧SH免密登錄的方式來(lái)實(shí)現(xiàn)這個(gè)目的。
首先,需要在Docker鏡像中安裝OpenSSH服務(wù)。在Dockerfile中,可以使用以下代碼來(lái)安裝:
RUN apt-get update && \ apt-get install -y openssh-server && \ mkdir /var/run/sshd && \ echo 'root:password' | chpasswd && \ sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \ sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
這個(gè)代碼片段中,首先更新了APT軟件包數(shù)據(jù)庫(kù),然后安裝了OpenSSH服務(wù)器,創(chuàng)建了/sshd目錄并配置了root用戶(hù)的密碼。最后,修改了sshd_config文件來(lái)開(kāi)啟root用戶(hù)登錄權(quán)限。
在Docker鏡像中安裝SSH服務(wù)之后,可以使用docker exec命令在容器內(nèi)部執(zhí)行SSH命令。但是,這種方式需要手動(dòng)輸入密碼,比較費(fèi)時(shí)。可以使用SSH免密登錄方式,實(shí)現(xiàn)自動(dòng)登錄。
在本地機(jī)器上生成SSH密鑰:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
將密鑰添加到容器中:
docker cp ~/.ssh/id_rsa.pub container:/root/.ssh/authorized_keys
使用ssh命令登錄容器:
ssh root@localhost -p 22
此時(shí),會(huì)自動(dòng)登錄到容器中,無(wú)須輸入密碼。這就是使用SSH免密登錄的方式。