情境說明/緣由
- 為了保護 Linux host, 避免被攻陷
- 方便工程師上傳程式碼: 配合 scp, rsync over ssh 等
- 過程能加密
準備
- 基礎安裝 Linux, 各種版本皆可, 這裡以 Debian 11 為例
- 安裝 docker, 參考 Install Docker Engine on Debian
- 安裝 docker-compose, 參考 How To Install Docker Compose on Debian 10, 不需要參考 docker.com 官網上的文件
-
調整 docker 設定檔, 參考我寫的這篇
設定步驟
- docker-compose.yaml
echo 'version: '3.7'
services:
xxxx.com-sshd:
image: linuxserver/openssh-server
container_name: xxxx.com-sshd
hostname: xxxx.com-sshd
environment:
- PUID=8888
- PGID=8888
- TZ=Asia/Taipei
- SUDO_ACCESS=false
- PASSWORD_ACCESS=true
- USER_NAME=web
- USER_PASSWORD_FILE=/run/secrets/mysecretpassword
volumes:
- /srv/prod/xxxx.com/config:/config
- /srv/prod/xxxx.com/web:/config/web
- /srv/prod/xxxx.com/mysecretpassword:/run/secrets/mysecretpassword
ports:
- 2222:2222
restart: unless-stopped' > docker-compose.yaml
簡單說明
- docker-compose service name, container name, hostname name 等都設定成一樣, 方便管理, 此處為: xxxx.com-sshd
- 把需要的目錄透過 volumes 掛到 container 裡
- linuxserver/openssh-server 內定 sshd port 為 2222
- container user name 設定為 web, 其中 uid, gid 設定為 8888, 對應到 host uid, gid 分別為 108888, 108888
- /srv/prod/xxxx.com/mysecretpassword 裡面放 web 的 ssh 登入密碼, 啟動 container 時, 就會自動加到 container:/etc/shadow 裡
- 啟動
docker-compose up -d
測試
從其他機器登入
ssh -oport=2222 web@[host ip]
設定 docker 版本的 sshd server