具備ssh server的Dockerfile

在做VSCode的Remote-SSH和Remote-Container的教學時發現需要一個具備ssh server的image,中間小小的踩雷的一下,所以這篇就把建置image的結果紀錄一下。

Dockerfile內容

FROM ubuntu:20.04
RUN apt update
RUN apt install openssh-server -y
RUN echo "Port 22" >> /etc/ssh/sshd_config
RUN echo "PasswordAuthentication no" >> /etc/ssh/sshd_config
RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
RUN echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
EXPOSE 22
ENTRYPOINT service ssh restart && bash

檔案名稱用Dockerfile,D要大寫。

這裡就是用ubuntu 20.04作為基礎image,再安裝openssh-server,然後寫入設定到/etc/ssh/sshd_config中。

這裡的設定禁用密碼登入,要登入得使用public key,並且容許root登入。

而我踩雷的部份就是最後一行的設定。


用Dockerfile建立image

docker build -t sshd-ubuntu .

-t用來是給予tag名稱與版本,上面沒有用:指定版本所以版本號會是latest


用image生成container並啟動

docker run -dt -p 2222:22 --name sshd-instance sshd-ubuntu

--name指定生成的container名稱為sshd-instance
-p作將container的22對應到本機2222,如果本機上已佔用2222埠,會啟動失敗


留言