はじめに
今回は /home/docker/sftp の下に環境を作ります
パーミッションの設定をしくじると、繋がらない、書き込みできないので注意が必要
ユーザー情報 users.conf の作成
ユーザー名:パスワードを必要数分記述
foo:123
bar:abcコンテナ作成ファイル compose.yml の作成
7,8行目の、foo, bar の部分はユーザーの数だけ記述する必要があります
services:
sftp:
image: atmoz/sftp:latest
container_name: sftp
volumes:
- /home/docker/sftp/users.conf:/etc/sftp/users.conf:ro
- /home/docker/sftp/data/foo:/home/foo/upload
- /home/docker/sftp/data/bar:/home/bar/upload
ports:
- "2222:22"
# 接続に時間ががかる対策
# https://github.com/atmoz/sftp/issues/341
ulimits:
nofile:
soft: 65536
hard: 65536
# 自動起動
restart: always共有フォルダの作成
# mkdir -p /home/docker/sftp/data
# chmod -R 777 dataDockerコンテナの起動
# docker compose up -d
# chmod -R 777 data/*コンテナ再起動用スクリプト
#! /bin/bash
ContainerName='sftp-server'
# 共有フォルダの作成
mkdir -p /home/docker/sftp/data
chmod 777 data
echo コンテナ削除
docker stop ${ContainerName}
docker rm ${ContainerName}
echo コンテナ作成と起動
docker compose up -d
chmod 777 data/*
echo Finish!ユーザー情報のパスワードをハッシュ化
パスワードを平文ではなく、ハッシュで保存するには
# openssl passwd -6 パスワード
$6$cMfxL7iiNcFzXg6Y$7PL3BcJ5C4zSbC00OUMN2s0F21wI7NzF4hMH/qW9npR.SoT10uB4wd/QVcrurLsAn7ob4TJieCt24lzrlf1LH.openssl でハッシュを求め、users.conf に :e をつけて記述します
foo:$6$cMfxL7iiNcFzXg6Y$7PL3BcJ5C4zSbC00OUMN2s0F21wI7NzF4hMH/qW9npR.SoT10uB4wd/QVcrurLsAn7ob4TJieCt24lzrlf1LH.:e
bar:abcユーザー追加スクリプトの作成
面倒くさいので、ユーザーを追加し users.conf に追記と、利用者に教えるパスワードを表示するスクリプトを作成
compose.yml のマウントフォルダの追加はされないので、手作業で
#! /bin/bash
# ユーザ名が引数で指定されているか判定
if [ -n "$1" ]; then
USER="$1"
else
echo
echo "sftp用ユーザの追加"
echo
echo " USAGE: ./add_sftp_usr.sh UserName"
echo
exit 1
fi
# パスワード生成
PASSWD=$(pwgen 16 1 -cnysB)↲
echo
echo "--- Password ---"
echo "${PASSWD}"
# パスワードのハッシュ生成
HASH=`openssl passwd -6 ${PASSWD}`
# echo "--- Hash ---"
# echo "${HASH}"
echo
# users.confに追加
printf "%s\n" "${USER}:${HASH}:e" >> users.conf実行結果
同じユーザーを指定すると上書きされず足されていくので、そこも手作業で
# ./add_sftp_usr.sh foo
--- Password ---
9;*P,mA{/s;p3~+k↲

コメント