Docker是一個非常流行的容器化平臺,它簡化了應用程序的開發、部署和管理。但是,在使用Docker時,有時需要在容器內部執行SSH命令。可以使用SSH免密登錄的方式來實現這個目的。
首先,需要在Docker鏡像中安裝OpenSSH服務。在Dockerfile中,可以使用以下代碼來安裝:
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
這個代碼片段中,首先更新了APT軟件包數據庫,然后安裝了OpenSSH服務器,創建了/sshd目錄并配置了root用戶的密碼。最后,修改了sshd_config文件來開啟root用戶登錄權限。
在Docker鏡像中安裝SSH服務之后,可以使用docker exec命令在容器內部執行SSH命令。但是,這種方式需要手動輸入密碼,比較費時。可以使用SSH免密登錄方式,實現自動登錄。
在本地機器上生成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
此時,會自動登錄到容器中,無須輸入密碼。這就是使用SSH免密登錄的方式。
下一篇純css打地鼠