小明的網誌

一個工程師的故事

By

設定 docker 版本的 sshd server

情境說明/緣由

  • 為了保護 Linux host, 避免被攻陷
  • 方便工程師上傳程式碼: 配合 scp, rsync over ssh 等
  • 過程能加密

準備

設定步驟

  1. 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 裡
  1. 啟動
docker-compose up -d

測試

從其他機器登入

ssh -oport=2222 web@[host ip]

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Verified by MonsterInsights